Gerätekompatibilitätsmodus

Android aktiviert einen Kompatibilitätsmodus für Apps, die die Ausrichtung oder Größenbeschränkungen. Der Kompatibilitätsmodus sorgt für ein akzeptables Verhalten der App Geräte mit großen Bildschirmen und faltbare Klapphandys, aber mit suboptimaler Nutzerfreundlichkeit.

Durch Überschreibungen pro App können Gerätehersteller Änderungen vornehmen. um die Nutzererfahrung zu verbessern oder zu verhindern, dass bei geräteübergreifend arbeiten.

Referenzgeräte

Für die folgenden Geräte sind aufgrund ungewöhnlicher Probleme möglicherweise Überschreibungen pro App erforderlich Konfigurationen oder Konfigurationen, die von Apps nicht gut unterstützt werden:

  • Tablets:Die normale Ausrichtung einiger Tablets wie Pixel Tablet, ist Querformat. Ein Gerät befindet sich in seiner natürlichen Ausrichtung, wenn Display#getRotation() Retouren Surface.ROTATION_0. Wenn Apps davon ausgehen, dass ROTATION_0 im Hochformat ist, App-Layout und Kameravorschau können nicht zum Gerätedisplay passen.
  • Faltbare Geräte im Querformat:Einige faltbare Geräte wie Pixel Fold werden Hochformat beim Aufklappen und Querformat beim Aufklappen. Wird angenommen, dass die ausgeklappte Ausrichtung im Hochformat ist, flackert das Display Schleifen oder Layoutprobleme auftreten.
  • Faltbare Smartphones:Aufgeklappte Klapphandys sind normalerweise im Hochformat zu sehen. Ausrichtung. Zugeklappt haben die Smartphones jedoch meist ein kleines Display im Querformat. Apps müssen die verschiedenen Ausrichtungen der Bildschirme.

Häufige Kompatibilitätsprobleme

Kompatibilitätsprobleme bei Apps treten am häufigsten aufgrund der Ausrichtung der App auf Einschränkungen hinsichtlich der Größe und des Seitenverhältnisses, Ausrichtung der Kameravorschau und falsch verwendete APIs.

Letterboxing

Mit Letterboxing-Balken wird die App in der Mitte des Bildschirms positioniert. für einen bequemen Zugriff auf die eine oder die andere Seite. Matt (einfarbige Balken) oder verschwommenem Hintergrund), füllen Sie den nicht genutzten Anzeigebereich an den Seiten oder oben unten in der App.

Das Letterbox-Bild tritt häufig auf Geräten mit großen Bildschirmen auf, da die Abmessungen und das Seitenverhältnis des Gerätedisplays in der Regel vom Standardformat abweichen. für die die meisten Apps entwickelt wurden.

Abbildung 1: Die App, die auf das Hochformat beschränkt ist, wird auf Tablets im Querformat und auf faltbaren Geräten im Letterbox-Format angezeigt.

Problem

Die App unterstützt nicht alle Displaykonfigurationen, da in der App Fehler behoben wurden Ausrichtung, ein festes Seitenverhältnis oder eine Größenanpassung.

Zu den Konfigurationseinstellungen, mit denen die Ausrichtung und Größenanpassung der App gesteuert wird, gehören die Folgendes:

  • screenOrientation: Gibt eine feste Ausrichtung für eine App. Apps können die Ausrichtung auch während der Laufzeit festlegen, indem sie Activity#setRequestedOrientation().

  • resizeableActivity: Gibt an, ob das System App-Größe so anpassen, dass sie in Fenster mit unterschiedlichen Abmessungen passt. Android 11 (API-Level) 30) und niedriger wird angegeben, ob Apps den Mehrfenstermodus unterstützen. An Unter Android 12 (API-Level 31) und höher wird angegeben, ob Apps den Mehrfenstermodus auf kleinen Bildschirmen (sw < 600 dp). Unter Android 12 und höher, unterstützen Apps den Mehrfenstermodus auf großen Bildschirmen (mindestens 600 dp) unabhängig von dieser Einstellung.

  • maxAspectRatio: Gibt das maximale Seitenverhältnis an von der App unterstützt wird. Nur Apps, für die resizeableActivity auf false festgelegt ist, können maxAspectRatio festlegen.

  • minAspectRatio: Gibt das Mindestseitenverhältnis an von der App unterstützt wird. Nur Apps, für die resizeableActivity auf false festgelegt ist, können minAspectRatio festlegen.

Optimierung

Die App sollte alle Bildschirmausrichtungen im Geräte- und Mehrfenstermodus unterstützen Größen. Entferne alle Einschränkungen in Bezug auf Ausrichtung und Seitenverhältnis aus deiner App Layouts und App-Manifest-Datei.

Kompatibilitäts-Problemumgehung

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

Ab Android 12 (API-Level 31) und 12L (API-Level 32) wendet die Plattform eine Vielzahl von Verbesserungen auf Apps im Letterbox-Format an. Gerät implementieren die Hersteller die Verbesserungen an der Benutzeroberfläche. Sie müssen nichts weiter tun, um von den Verbesserungen zu profitieren.

Mit Android 12 (API-Level 31) werden die folgenden ästhetischen Verbesserungen eingeführt: kann von Geräteherstellern konfiguriert werden:

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

Abbildung 2: App mit Letterbox-Bild und verbesserter Benutzeroberfläche

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

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

  • Neu gestaltete Neustart-Schaltfläche:Gerätehersteller können den Neustart durchführen, Schaltfläche für einen neuen Look für den Größenkompatibilitätsmodus für eine bessere Anerkennung von Nutzern.

Unter Android 13 (API-Level 33) wird ein Dialogfeld mit Informationen zur Positionierung des App mit Letterbox-Bild auf dem Bildschirm oder mit Letterbox-Bild im Splitscreen-Modus:

Abbildung 3: App mit Letterbox-Bild und Dialogfeld mit Informationen für Nutzer

Größenkompatibilitätsmodus

Der Größenkompatibilitätsmodus ist das Letterbox-Verfahren, das ein Steuerelement für den Neustart enthält. Die ermöglicht es Nutzenden, die App neu zu starten und den Bildschirm neu zu zeichnen. Android-Aufrufe Größenkompatibilitätsmodus für Apps, deren Größe nicht angepasst werden kann. Wenn ein wird in einen Anzeigecontainer verschoben, der nicht mit dem der Aktivität kann das System die App anpassen, damit die Anzeige auf dem Gerät mindestens eine Dimension.

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

  • Bildschirm drehen
  • Faltbares Gerät auf- oder zuklappen
  • Zwischen Vollbildmodus und Splitscreen wechseln

Problem

Der Größenkompatibilitätsmodus gilt in der Regel für Aktivitäten, die in Ausrichtung oder Seitenverhältnis und sind so konfiguriert (oder vom System bestimmt), nicht in der Größe veränderbar sein.

Die Größe Ihrer App kann nicht geändert werden. Kompatibilitätsmodus – wenn eines der folgenden Kriterien erfüllt ist:

Wenn Ihre App keine dieser Bedingungen erfüllt, gilt sie als nicht erfüllt in der Größe veränderbar und kann in den Größenkompatibilitätsmodus verschoben werden.

Optimierung

Die App sollte alle Displaygrößen unterstützen. Passen Sie die Größe Ihrer App an, indem Sie das Attribut android:resizeableActivity von <activity> oder <application>-Element auf true im App-Manifests. Entwerfen Sie responsive/adaptive Layouts für Ihre App. Weitere Informationen finden Sie unter Unterstützung verschiedener Bildschirmgrößen und Unterstützung des Mehrfenstermodus.

Kompatibilitäts-Problemumgehung

Android platziert eine App in den Größenkompatibilitätsmodus, wenn das System die kann die Darstellung der App mit Letterbox-Bild verbessert werden, indem die App so skaliert wird, dass sie in mindestens einer Dimension anzeigen. Das System zeigt ein Steuerelement zum Neustart an. der den App-Prozess nachbildet, die Aktivität und den Display. Siehe auch Übersicht über Prozesse und Threads.

Flackernde Schlaufen

Wenn eine App nicht alle Bildschirmausrichtungen unterstützt, kann es wiederholt eine neue Ausrichtung anfordern, wenn eine Konfigurationsänderung erfolgt. Endlosschleife, durch die das Display flackert oder die App endlos rotiert.

Problem

Unter Android 12 (API-Level 31) und höher können Gerätehersteller von Apps festgelegte Ausrichtungsbeschränkungen ignorieren und stattdessen Kompatibilitätsmodi durchzusetzen. Beispielsweise kann ein faltbares Gerät android:screenOrientation="portrait" der Aktivität wenn die Aktivität auf dem Tablet im Querformat angezeigt wird, inneres Display.

Wenn die Ausrichtungsbeschränkungen einer App ignoriert werden, kann die App programmatisch Ausrichtung festlegen, indem Sie Activity#setRequestedOrientation(). Der Anruf Löst einen App-Neustart aus, wenn die App Konfigurationsänderungen nicht verarbeitet (siehe Konfigurationsänderungen verarbeiten. Nach dem neu starten, werden die Ausrichtungsbeschränkungen der App wieder ignoriert, die App wiederholt dem Aufruf von setRequestedOrientation(), löst der Aufruf einen Neustart der App aus und in einer sich selbst fortlaufenden Schleife.

Eine weitere Möglichkeit ist, natürliche Ausrichtung (die gewöhnliche Ausrichtung als von Android) eines Gerätebildschirms im Querformat ist, d. h. Display#getRotation()-Rückgaben Surface.ROTATION_0, während das Gerät im Querformat ist Seitenverhältnis). Bisher wurde in Apps davon ausgegangen, dass Display.getRotation() = Surface.ROTATION_0 bedeutet, dass das Gerät im Hochformat gezeigt wird. Das ist aber nicht 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 Bildschirmdrehung, Wert ROTATION_0 erhalten, natürliche Ausrichtung annehmen des Geräts im Hochformat angezeigt wird und setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ), um das App-Layout neu zu konfigurieren. Nach dem Neustart der App (im Querformat) Ausrichtung), wird möglicherweise die Bildschirmdrehung erneut überprüft, es wird der Wert ROTATION_0, Anruf setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) und die Endlosschleife fortsetzen.

Optimierung

Folgendes sollte in Apps nicht ausgeführt werden:

  • Legen Sie mit Activity#setRequestedOrientation() im Feld onCreate()-Aktivitätsmethode liegt, weil die Ausrichtungsanfrage so aussehen kann, Unerwartete Auslösung durch unbehandelte Konfigurationsänderungen
  • Ausgehend von der natürlichen Ausrichtung des Geräts (ROTATION_0) im Hochformat annehmen
  • Legen Sie die Ausrichtung anhand von Signalen fest, die nicht mit der aktuellen Fenstergröße zusammenhängen, z. B. als Display#getRotation(), bei vorhandenem FoldingFeature oder eingestellte APIs.

Kompatibilitäts-Problemumgehung

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

Kameravorschau

Die Kameravorschau (oder der Sucher) von Kamera-Apps ist möglicherweise falsch ausgerichtet oder verzerrt auf Tablets, Laptops und faltbaren Displays.

Problem

Im Android-Kompatibilitätsdefinitionsdokument steht, dass ein Kamera-Bildsensor "MÜSSEN so ausgerichtet sein, dass die lange Seite der Kamera zur Länge des Bildschirms passt.“

Apps gehen oft davon aus, dass die Ausrichtung des Geräts und des Kamerasensors korrekt ist Hochformat – eine vernünftige Annahme auf Standardhandys. Die die natürliche Ausrichtung von Tablets und Laptops sowie deren Kamerasensoren zu verbessern. Neue Formfaktoren wie faltbare Geräte können außerdem mehrere Ausrichtungen und mehrere Kamerasensoren mit unterschiedlicher Ausrichtung.

Starten einer Aktivität mit einer Kameraausrichtung, die die App nicht erwartet, oder kann der Wechsel zwischen verschiedenen Kameras oder Bildschirmen (bei faltbaren Geräten) zu eine falsch ausgerichtete oder verzerrte Kameravorschau.

Optimierung

Kamera-Apps müssen die Ausrichtung des Geräts und die Kamera korrekt identifizieren und verwalten Sensorausrichtung, um eine korrekt ausgerichtete und skalierte Kameravorschau anzuzeigen. Apps müssen die Gerätedrehung, die Sensordrehung und den Bildschirm oder das Fenster berechnen Seitenverhältnis und wenden die Ergebnisse dann auf die Kameravorschau an. Ausführliche Informationen finden Sie unter Kameravorschau und Einführung in die Kamera Sucher.

Kompatibilitäts-Problemumgehung

Ein Gerät befindet sich in natürlicher Ausrichtung, wenn Display#getRotation() gibt Surface.ROTATION_0 zurück. Das System berechnet CameraCharacteristics.SENSOR_ORIENTATION aus der natürlichen Ausrichtung des Geräts heraus. Android richtet das Fenster im Hochformat Apps im Hochformat mit der natürlichen Ausrichtung des Geräts, was die meisten Apps erwarten. Android schneidet das Bild des Kamerasensors auch zu, wenn die Die Sensorausrichtung ist im Querformat und die Kameravorschau im Hochformat. Die spezifischen So können Sie das Problem umgehen:

  • Drehen der Kameravorschau für Apps mit eingeschränktem Hochformat erzwingen:Apps nur im Hochformat gezeigt werden, rechnen Sie mit der natürlichen Ausrichtung des Geräts, und die Ausrichtung des Kamerasensors auf Hochformat. Unter Android 12 (API-Level 31) und höher können Apps in verschiedenen Geräteausrichtungen ausgeführt werden, Gerätehersteller die Ausrichtungsangabe ignorieren.

    Wenn eine App mit eingeschränktem Hochformat mit der Kamera verbunden ist, erzwingt Android Dreht die App, sodass das App-Fenster im Hochformat an der natürlichen Ausrichtung des Geräts.

    Auf einigen Tablets (siehe Referenzgeräte) wird die App Fenster im Hochformat wird zum Vollbild-Hochformat gedreht, um es natürliche Ausrichtung des Geräts. Die App belegt den gesamten Bildschirm nach dem Erzwingen. Rotation.

    Auf dem inneren Display im Querformat bei faltbaren Geräten (siehe Referenz Geräte) werden Aktivitäten im Hochformat so gedreht, dass Querformat so, dass es an der aufgeklappten natürlichen Ausrichtung ausgerichtet ist. Die App ist mit Letterbox-Bild nach der erzwungenen Drehung.

  • Innerer Frontkamera zugeschnitten:Der Sensor der inneren Frontkamera ist bei einigen faltbares Smartphone im Querformat. Zusätzlich zum Drehen des Kameravorschau auf dem faltbaren inneren Display, Android passt die Vorderseite zu (Querformat) des Kamera-Sichtfelds, sodass der Sensor die gegenüberliegende Ansicht erfasst Ausrichtung des Geräts ändern.

  • Aktualisierung der Kameravorschau erzwingen:Das System durchläuft die Aktivität. Methoden onStop() und onStart() (standardmäßig) oder onPause() und onResume() (angewendet vom KAMERA_KOMPAT_AKTIVIEREN_ÜBERARBEITEN_VIA_PAUSE App-spezifische Überschreibung) nach der erzwungenen Drehung, um sicherzustellen, dass die Kameravorschau richtig dargestellt werden.

  • Seitenverhältnisskalierung:Das System ändert dynamisch das Seitenverhältnis des wurde die Kameravorschau auf ein höheres Mindestseitenverhältnis gedreht, sorgt dafür, dass die Kameravorschau richtig skaliert wird.

App-Entwickler können diese Problemumgehungen überschreiben, wenn die Apps die Kameravorschau verarbeiten korrekt sind. Siehe Überschreibungen pro App.

Häufig missbrauchte APIs

Da Android nun auch Funktionen wie den Mehrfenstermodus und wie faltbare Geräte, wurden Legacy-APIs eingestellt und durch Aktuelle APIs, die für alle Display- und Gerätegrößen funktionieren Faktoren. Die eingestellten APIs sind jedoch weiterhin für rückwärtskompatible Kompatibilität.

Einige View APIs wurden für besondere Zwecke entwickelt, die nicht immer gut funktionieren die von den Entwicklern verstanden werden.

Problem

Entwickler verwenden weiterhin eingestellte Display APIs und gehen fälschlicherweise davon aus, dass die APIs geben die App-Grenzen statt der Display-Bereichsgrenzen der Geräte zurück. Oder Entwickler verwenden Sie fälschlicherweise spezielle View APIs, um allgemeine Messwerte für Displayanzeigen abzurufen. Es kommt zu Fehlkalkulationen, wenn UI-Elemente nach dem App-Fenster neu positioniert werden. Größenänderung von Ereignissen, was zu Layout-Problemen führt.

Eingestellte und häufig missbrauchte Display-APIs:

Weitere Informationen finden Sie 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 basierend auf WindowMetrics, einschließlich der folgenden WindowManager-APIs:

Kompatibilitäts-Problemumgehung

Durch zwei Überschreibungen werden die eingestellten Display APIs und die missbräuchlich verwendeten View APIs angepasst, um Anwendungsgrenzen zurückgeben: ALWAYS_SANDBOX_DISPLAY_APIS für Display APIs OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS für View APIs. ALWAYS_SANDBOX_DISPLAY_APIS wird standardmäßig auch auf Apps, die für den Größenkompatibilitätsmodus infrage kommen.

Transparente Aktivitäten

Transparente Aktivitäten entstehen durch transparente Hintergrundstile. Beispiel:

<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 verwenden, die Aktivitäten transparent machen.

Transparente Aktivitäten decken nicht den gesamten verfügbaren Platz ein. schwierig zu verwalten, da sich der verfügbare Anzeigebereich je nach Konfigurationsänderungen wie Gerätedrehung, Auf- und Zuklappen des Geräts Mehrfenstermodus.

Problem

Eine transparente Aktivität muss den Grenzen der ersten undurchsichtigen Aktivität entsprechen. unterhalb der transparenten Aktivität im Aufgaben-Aktivitätsstack. Eine opake kann eine Aktivität, bei der ein Berechtigungsdialogfeld geöffnet wird, Trampolin (eine Aktivität, die eine andere Aktivität startet und dann wieder verschwindet); und Das System kann also die Grenzen der Trampolinaktivität nicht bestimmen, die Dialogfeldaktivität "Transparentes Berechtigungsdialogfeld" gestartet.

Optimierung

Transparente Aktivitäten übernehmen ihre Einschränkungen von der obersten undurchsichtigen Farbe welche Aktivitäten im Aktivitäten-Stack einer Aufgabe angezeigt werden. Die opake Aktivität muss der transparenten Aktivität verfügbar ist, von der Schöpfung bis zur Vernichtung. Starte daher keine Berechtigungsanfragen von Trampolinaktivitäten.

Wenn eine Trampolinaktivität eine Berechtigungsanfrage startet, ist der Benutzer möglicherweise kann ich den Dialog mit den Berechtigungen sehen, da die Trampolinaktivität bevor die Nutzenden auf das Dialogfeld reagieren konnten, und der Die Dimensionen und die Position der Dialogaktivität wurden möglicherweise berechnet falsch.

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

Abgerundete Ecken

Eine Aktivität kann aufgrund eines Stils, der den Hintergrund vorgibt, transparent sein oder weil der Inhalt der Aktivität die verfügbaren Werbefläche. Wenn eine transparente Aktivität die verfügbare Anzeigefläche ausfüllt, wendet das System automatisch abgerundete Ecken auf die Aktivität an, wenn vom Gerätehersteller. Wenn jedoch eine transparente Aktivität (z. B. nicht den verfügbaren Platz ausfüllt, müssen Sie entscheiden, ob abgerundete Ecken verwendet werden sollen.

Berechtigungsdialogfelder füllen nicht den verfügbaren Platz, da das Dialogfeld für das Layout wird in der Regel LayoutParams.WRAP_CONTENT verwendet, LayoutParams.MATCH_PARENT.

Kompatibilitäts-Problemumgehung

Aktivitäten zum Starten von Dialogaktivitäten sichtbar lassen, bis der Nutzer hat auf den Dialog geantwortet.

Das System stellt sicher, dass eine transparente Aktivität alle Einschränkungen vom unter der transparenten Aktivität im Aktivitäten-Stack einschließlich Einschränkungen hinsichtlich Folgendem:

  • Größenkompatibilitätsmodus
  • Ausrichtung
  • Seitenverhältnis

Unity-Spiele

Unity-Spiele laufen auf Android-Geräten im Vollbildmodus oder im Mehrfenstermodus. Sie können jedoch viele Unity-Spiele verlieren den Fokus und zeichnen keine Inhalte mehr, wenn die App Mehrfenstermodus.

Problem

Unity hat einen Resizable Window hinzugefügt in Unity 2019.4 ein, um den Mehrfenstermodus unter Android zu unterstützen. Sie können jedoch Die ursprüngliche Implementierung reagierte nicht auf den Aktivitätslebenszyklus in Mehrfenstermodus korrekt funktioniert, UnityPlayer hält die Wiedergabe an, wenn die App den Fokus verliert. Der Player rendert oder der letzte eingefrorene Frame des Spiels. Gameplay wird nur fortgesetzt, wenn auf den Bildschirm getippt hat. Bei vielen Apps, die die Unity Engine nutzen, tritt dieses Problem auf. werden im Mehrfenstermodus als schwarzes Fenster gerendert.

Optimierung

Führe ein Upgrade von Unity auf Version 2019.4.40 oder höher durch und exportiere dein Spiel noch einmal. Behalten Sie die Die Option Resizable Window wurde im Android Player-Einstellungen, andernfalls Das Spiel wird angehalten, wenn es nicht im Fokus ist, obwohl es vollständig zu sehen ist. Mehrfenstermodus.

Kompatibilitäts-Problemumgehung

Gerätehersteller können die OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS Überschreibung pro App, um einer App in Mehrfenstermodus. Die Überschreibung ermöglicht es der Aktivität, Inhalte neu zu zeichnen und nicht geschwärzt werden.

App auf Kompatibilitätsprobleme testen

Um deine App zu testen und zu verstehen, wie sie sich bei verschiedenen Formfaktoren verhält, nutzen Sie die folgenden Ressourcen:

Mit Letterbox-Bild

Stellen Sie sicher, dass jede Aktivität den gesamten für die App verfügbaren Anzeigeraum nutzen kann. Geben Sie zuerst den folgenden Code in Ihrem Testordner an:

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 bestätigen, und stellen Sie sicher, dass die Zielaktivität nicht Letterbox-Bild:

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 im Idealfall nur so lange durch, bis die App erfolgreich ist und Aktivitäten belegen den gesamten für die App verfügbaren Platz. App testen auf allen Gerätetypen an, um ein einheitliches Verhalten zu gewährleisten.

Überschreibungen pro App

Android bietet Überschreibungen, die das konfigurierte Verhalten von Apps ändern. Für Beispiel: Die Überschreibung FORCE_RESIZE_APP weist den um den Größenkompatibilitätsmodus zu umgehen und die App an die Displaygröße anzupassen auch wenn resizeableActivity="false" gleich die im App-Manifest angegeben sind.

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

Überschreibungen für Nutzer pro App

Unter Android 14 und höher können Nutzer über ein Einstellungsmenü das Seitenverhältnis ändern. Verhältnis von Apps. Geräte mit großem Bildschirm wie die Referenz Geräte implementieren, um das Menü zu implementieren.

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

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

  • PROPERTY_KOMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE

    Fügen Sie die Property hinzu, um die Überschreibung der Kompatibilität mit dem Seitenverhältnis des Nutzers zu deaktivieren in Ihr App-Manifest ein 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*innen das Seitenverhältnis der App nicht überschreiben.

    Das Festlegen des Attributs auf true hat keine Auswirkungen.

  • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE

    Option zum Deaktivieren der Vollbildoption mit Seitenverhältnis-Kompatibilität überschreiben, fügen Sie die Eigenschaft zu Ihrem App-Manifest hinzu und legen Sie den Wert auf false:

    <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 Geräteeinstellungen. Nutzer können die Vollbildüberschreibung nicht auf für Ihre App.

    Das Festlegen dieses Attributs auf true hat keine Auswirkungen.

Optimieren Sie Ihre App für alle Bildschirme:Legen Sie in den für Ihre App. Verwenden Sie Fenstergrößenklassen, um verschiedene je nach verfügbarer Displayfläche anpassen.

Ü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 auf einen für eine Vielzahl von Apps.

Für Apps können die meisten Überschreibungen deaktiviert werden (siehe den Abschnitt Pro App Überschreibungen unten) angezeigt.

Sie können Ihre App mit aktivierten oder deaktivierten Überschreibungen testen. Verwenden Sie dazu die (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 deaktivieren Sie Überschreibungen und legen Sie fest, 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 unter Referenzgeräte, welche Überschreibungen für Ihre App:

adb shell dumpsys platform_compat | grep <package name>

In der folgenden Tabelle sind die verfügbaren Überschreibungen zusammen mit einer Anleitung zum Optimieren Sie Ihre App, damit sie nicht auf Überschreibungen angewiesen ist. Sie können Property-Flags in Ihrem App-Manifest an, um einige Überschreibungen zu deaktivieren.

Überschreibungen pro App
Typ Name ID Beschreibung
Größenanpassung <ph type="x-smartling-placeholder"></ph> APP_RESIZE_APP_ERZIEHEN 174042936 Umgeht den Größenkompatibilitätsmodus für die App bei Konfigurationsänderungen.
<ph type="x-smartling-placeholder"></ph> APP_NICHT_RESIZE_APP_ERZWINGEN 181136395 Erzwingt die App bei Konfigurationsänderungen in den Größenkompatibilitätsmodus.
Seitenverhältnis <ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_MIN_ASPECT_RATIO 174042980 Gatekeeper-Überschreibung, die aktiviert werden muss, um andere Seitenverhältnisüberschreibungen anzuwenden.
<ph type="x-smartling-placeholder"></ph> OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY 203647190 Wenn diese Option aktiviert ist (Standardeinstellung), wird der Überschreibungsbereich auf Aktivitäten beschränkt, die nur im Hochformat möglich sind.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_MITTEL 180326845 Ändert das Mindestseitenverhältnis in 3:2.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_MIN_ASPECT_RATIO_GROß 180326787 Ändert das Mindestseitenverhältnis in 16:9.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_MIN_DER_ASPECT_RATIO_TO_ALIGN_MIT_SPLIT_SCREEN 208648326 Ändert das Mindestseitenverhältnis, sodass es für 50% der Bildschirmgröße passt (oder das Seitenverhältnis im geteilten Bildschirm).
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_VOLLBILD 218959984 Hiermit wird die Überschreibung des Mindestseitenverhältnisses deaktiviert, sodass Apps im Hochformat angezeigt werden.
Ausrichtung <ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_ANY_ORIENTATION 265464455 Ermöglicht das Überschreiben einer Ausrichtung.
<ph type="x-smartling-placeholder"></ph> JEDER_ORIENTATION_AN_NUTZER_ÜBERSCHREIBEN 310816437 Überschreibt die Einschränkungen für Ausrichtung, Größenänderung und Seitenverhältnis.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_UNDEFINIERTER_ORIENTATION_ZU_PORTRAIT 265452344 Wenn eine Aktivität eine nicht definierte Ausrichtung hat, wird das Hochformat als Ausrichtung überschrieben.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_UNDEFINIERTER_ORIENTATION_TO_NOSENSOR 265451093 Wenn eine Aktivität eine nicht definierte Ausrichtung hat, wird die Ausrichtung mit nosensor überschrieben (natürliche Ausrichtung des Geräts verwenden).
<ph type="x-smartling-placeholder"></ph> ÜBERSICHT_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE 266124927 Dreht sich nur Apps im Querformat um 180 Grad.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_NUR_FÜR_KAMERA 265456536 Beschränkt den Bereich zum Überschreiben der Ausrichtung auf den Bereich, wenn die App mit der Kamera verbunden ist.
<ph type="x-smartling-placeholder"></ph> OVERRIDE_USE_DISPLAY_LANDSCHAFT_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).
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION 254631730 Ignoriert Ausrichtungsanfragen von der App, um Endlosschleifen für die Drehung zu vermeiden.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_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 Neuausrichtungen anfordert, betrachtet das System dies als Endlosschleife und wendet die Überschreibung an.
<ph type="x-smartling-placeholder"></ph> OVERRIDE_RESPECT_REQUESTED_ORIENTATION 236283604 Verhindert Letterbox-Bild, indem die Einstellung zum Ignorieren der Ausrichtungsanfrage durch den Gerätehersteller deaktiviert wird.
Sandbox-APIs <ph type="x-smartling-placeholder"></ph> NEVER_SANDBOX_DISPLAY_APIS 184838306 Verhindert eine Änderung des Verhaltens von Display-APIs.
<ph type="x-smartling-placeholder"></ph> ALWAYS_SANDBOX_DISPLAY_APIS 185004937 Erzwingt, dass die Display APIs in der App App-Grenzen zurückgeben. Display-APIs geben logische Darstellungsbereichgrenzen zurück, aber manchmal geht die App davon aus, dass Display-APIs App-Grenzen zurückgeben, was zu Problemen mit der Benutzeroberfläche führt.
<ph type="x-smartling-placeholder"></ph> 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 <ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_KAMERA_KOMPAT_DISABLE_FORCE_ROTATION 263959004 Deaktiviert die erzwungene Drehung. Standardmäßig werden alle Kamera-Apps mit fester Ausrichtung erzwungen, wenn die Kameravorschau geöffnet ist.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBEN_KAMERA_KOMPAT_DEAKTIVIERT_AKTUALISIEREN 264304459 Die standardmäßige Hartaktualisierung, die angewendet wird, wenn eine Kameravorschau erzwungen wird, wird entfernt.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBEN_KAMERA_KOMPAT_AKTIVIERT_ÜBERARBEITEN_VIA_PAUSE 264301586 Schaltet die feste Aktualisierung auf eine weiche Aktualisierung um, wenn eine Kameravorschau erzwungen wird. Dadurch wird der Zustand während der erzwungenen Drehung beibehalten. Standardmäßig führt Android eine vollständige Aktualisierung durch, wenn die Kameravorschau erzwungen wird. Die vollständige Aktualisierung kann dazu führen, dass Apps den Status verlieren oder schwärzen, je nachdem, wie die Apps ihren vorherigen Status im Cache gespeichert haben.
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_KAMERA_LANDSCHAFT_ZU_PORTRAIT 250678880 Beschneidet den Bildpuffer der inneren Frontkamera. 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 <ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBEN_ENABLE_KOMPAT_FAKE_FOCUS 263259275 Verhindert, dass die App geschwärzt 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.

APP_RESIZE_APP_ERZIEHEN

Erzwingt, dass die Größe der Pakete, auf die die Überschreibung angewendet wird, geändert werden kann. Nicht festlegen, ob die App in den Mehrfenstermodus versetzt werden kann, aber die App die 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 den Parameter Attribut android:resizeableActivity auf true oder an, unterstützen Größenanpassung bei deaktiviertem Mehrfenstermodus mit android:resizeableActivity=false, lege android.supports_size_changes fest Metadaten-Flag auf true.

Apps optimieren

Nutzen Sie responsive/adaptive Layouts, damit sich Apps an alle Displaygrößen und Seitenverhältnissen. Weitere Informationen finden Sie unter Unterstützen Sie unterschiedliche Bildschirmgrößen.

Überschreiben deaktivieren oder deaktivieren

Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES auf false.

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 ändern die Größe der App:

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.

APP_NICHT_RESIZE_APP_ERZWINGEN

Erzwingt, dass die Größe der Pakete, auf die die Überschreibung angewendet wird, nicht geändert werden kann bei Konfigurationsänderungen den Kompatibilitätsmodus für die Größe aufrufen.

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

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

Apps optimieren

Alle Apps, die sich gut verhalten, wenn ihre Größe angepasst wird, sollten entweder android:resizeableActivity oder android.supports_size_changes auf true festgelegt. Andere Apps sollten verbessert werden, damit sie auch bei Größenänderung gut funktionieren. Weitere Informationen finden Sie unter android:resizeableActivity verwenden.

Überschreiben deaktivieren oder deaktivieren

Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES auf false.

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 legen fest, dass die Größe der App nicht geändert werden kann:

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.

ÜBERSCHREIBUNG_MIN_ASPECT_RATIO

Entspricht dem Gatekeeper für alle Überschreibungen, die ein bestimmtes minimales Seitenverhältnis erzwingen.

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

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

Apps optimieren

Legen Sie in Ihrer App keine Einschränkungen des Seitenverhältnisses fest. Achten Sie darauf, dass Ihre App unterschiedliche Bildschirmgrößen. Fenstergrößenklassen verwenden um verschiedene Layouts zu unterstützen, je nachdem, wie viel Platz Ihre App auf der Bildschirm. Weitere Informationen finden Sie in der Compose WindowSizeClass API. und View WindowSizeClass API.

Überschreiben deaktivieren oder deaktivieren

Geben Sie eine Einschränkung des Seitenverhältnisses an oder legen Sie das Attribut-Flag fest PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE in 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.

ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_PORTRAIT_ONLY

Beschränkt App-Einstellungen, die ein bestimmtes Mindestseitenverhältnis für Aktivitäten erzwingen im Hochformat. Standardmäßig aktiviert und nur wirksam OVERRIDE_MIN_ASPECT_RATIO ist ebenfalls aktiviert.

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.

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

ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_MITTEL

Legt das minimale Seitenverhältnis der Aktivität auf einen mittleren Wert (3:2) 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.

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:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREITUNG_MIN_ASPECT_RATIO_GROß

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.

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

Dadurch kann das Seitenverhältnis für geteilten Bildschirm verwendet werden. Ermöglicht einer App, alle im Split-Screen-Modus verfügbar, sodass Letterboxing-Balken vermieden werden.

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.

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.

ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_VOLLBILD

Deaktiviert die Überschreibung des Mindestseitenverhältnisses im Hochformat im Vollbildmodus zur Verwendung aller auf dem Bildschirm verfügbar ist.

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.

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:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBUNG_ANY_ORIENTATION

Aktiviert die folgenden Überschreibungen zum Überschreiben einer Ausrichtung:

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

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

Apps optimieren

Deine App sollte alle Ausrichtungen unterstützen. Eine Änderung der Ausrichtung ist ein Konfigurationsänderung, die auf zwei Arten vorgenommen werden kann: System löschen und neu erstellen oder Konfigurationsänderungen verwalten selbst. Wenn Sie Konfigurationsänderungen selbst verwalten, kann der App-Status mit ViewModel beibehalten werden. In sehr seltenen Fällen können Sie das Ausrichtung nur auf kleinen Displays, auch wenn dies möglicherweise nicht so gut skaliert wird So kann der Nutzer die App nach Bedarf drehen. Unter Android 12L und höher feste Ausrichtung kann durch die Gerätekonfiguration überschrieben werden. Weitere Informationen Informationen zum Umgang mit Konfigurationsänderungen und zur Unterstützung aller siehe Konfigurationsänderungen verarbeiten. ViewModel-Übersicht und App-Ausrichtung eingeschränkt aktiviert Smartphones, aber nicht auf Geräten mit großen Bildschirmen.

Überschreiben deaktivieren oder deaktivieren

Attribut-Flag festlegen PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE an false.

Property-Flags zum Anpassen der Überschreibung

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

JEDE_ORIENTATION_AN_NUTZER_ÜBERSCHREITEN

Ermöglicht der App, den verfügbaren Anzeigebereich zu füllen. Alle Ausrichtungen, Einschränkungen hinsichtlich der Größe und des Seitenverhältnisses, die im App-Manifest angegeben sind. Ebenfalls ignoriert alle Aufrufe von Activity#setRequestedOrientation().

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

  • Legen Sie nicht das android:screenOrientation-Manifest fest. oder legen Sie das Attribut auf "user" fest.

  • android:resizeableActivity-Manifest festlegen Attribut zu true.

  • Auf kleinen Bildschirmen, um die Größenanpassung von Apps zu unterstützen und gleichzeitig den Mehrfenstermodus zu deaktivieren mit android:resizeableActivity=false verwenden, legen Sie Metadaten-Flag android.supports_size_changes auf true. Nicht festlegen minAspectRatio und maxAspectRatio.

Apps optimieren

Deine App muss alle Ausrichtungen unterstützen. screenOrientation nicht festlegen im Manifest deiner App angegeben. Unterstützen Sie die Größenanpassung von Apps, des Mehrfenstermodus und aller Anzeigeseitenverhältnisse durch Festlegen der android:resizeableActivity im Manifest deiner App zu true. Weitere Informationen finden Sie unter Unterstützen Sie unterschiedliche Bildschirmgrößen.

Überschreiben deaktivieren oder 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:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREITUNG_UNDEFINIERTER_ORIENTATION_ZU_PORTRAIT

Aktiviert das Hochformat für alle Aktivitäten im Paket. Es sei denn, OVERRIDE_ANY_ORIENTATION aktiviert ist, wird die Überschreibung wird 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.

Überschreiben deaktivieren oder 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:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBEN

Aktiviert die nosensor-Ausrichtung für alle Aktivitäten im Paket. Es sei denn, OVERRIDE_ANY_ORIENTATION ist aktiviert ist, wird die Überschreibung nur verwendet, wenn keine andere feste Ausrichtung festgelegt wurde. die durch die Aktivität angegeben wird.

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.

Überschreiben deaktivieren oder 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:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBUNG_LANDSCHAFT_ORIENTATION_ZU_REVERSE_LANDSCHAFT

Aktiviert die Ausrichtung reverseLandscape (rückwärts) für alle Aktivitäten in für das Paket. Es sei denn, OVERRIDE_ANY_ORIENTATION ist aktiviert ist, wird die Überschreibung nur verwendet, wenn keine andere feste Ausrichtung festgelegt wurde. die durch die Aktivität angegeben wird.

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.

Überschreiben deaktivieren oder 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_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>

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

ÜBERSCHREIBUNG_NUR_FÜR_KAMERA

Beschränkungen OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR, und ÜBERSCHREIBUNG_LANDSCHAFT_ORIENTATION_ZU_REVERSE_LANDSCHAFT werden nur wirksam, wenn die Kameraverbindung aktiv ist.

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.

Überschreiben deaktivieren oder 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_ORIENTATION_ONLY_FOR_CAMERA <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>

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

OVERRIDE_USE_DISPLAY_LANDSCHAFT_NATURAL_ORIENTATION

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

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

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

Attribut-Flag festlegen PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE an false.

Property-Flags zum Anpassen der Überschreibung

<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 eine kompatible Richtlinie, die das Aktualisieren der App-Ausrichtung als Reaktion auf die App überspringt Activity#setRequestedOrientation() wird angerufen, wenn App den Neustart durchführt oder eine aktive Kamerakompatibilität aufweist.

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

Property-Flag festlegen PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION an true.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreiben deaktivieren oder deaktivieren

Property-Flag festlegen PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION an false.

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:Die Befehle werden 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 in Antwort auf den App-Aufruf Activity#setRequestedOrientation() mehr als zweimal in einer Sekunde, wenn eine Aktivität nicht für die feste Ausrichtung im Letterbox-Format verwendet wird.

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

Property-Flag festlegen PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED bis false.

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.

ÜBERSCHREIBUNG_RESPECT_ANGEBOTSORIENTATION

Schließt Pakete vom Ignorieren der Ausrichtungsanfrage aus, das aktiviert werden kann von Geräteherstellern für einen Bildschirmbereich oder das gesamte Display.

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 Überschreibung kann gefährlich sein, wenn die App nicht kompatibel ist mit einem Gerät, bei dem der Gerätehersteller die Ausrichtungsanfrage ignoriert aktiviert ist. Android-Entwickler kontaktieren Beziehungen, um das Überschreiben 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 nie eine Display-API-Sandbox angewendet wird für eine Aktivität im Letterbox- oder Größenkompatibilitätsmodus. Die Display-APIs die Darstellungsbereichgrenzen angeben.

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

Sie können Aktivitäten angeben, deren Größe angepasst werden kann, indem Sie Manifest-Attribut android:resizeableActivity für true oder das Metadaten-Flag android.supports_size_changes auf true.

Apps optimieren

Bei Apps, für die angegeben wird, dass ihre Größe vollständig angepasst werden kann, sollte sich nie auf die Anzeigegröße verlassen werden. um UI-Elemente zu positionieren. Migrieren Sie Ihre App zu aktuellen APIs, die stellen Sie WindowMetrics bereit. Wenn Sie Jetpack Compose verwenden, nutzen Sie die WindowSizeClass API zum Zeichnen der Benutzeroberfläche je nach Bildschirmgröße Bereich, den die App auf dem aktuellen Display hat. Weitere Informationen finden Sie unter Fenstergrößenklassen:

Überschreiben deaktivieren oder deaktivieren

Keine Deaktivierung. Von verworfenen APIs migrieren.

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 für Pakete immer die API-Sandbox von Display angewendet wird unabhängig vom Fenstermodus. Die Display APIs stellen immer die Anwendungsgrenzen bereit.

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

Sie können Aktivitäten deklarieren, deren Größe nicht geändert werden kann, indem Sie android:resizeableActivity-Attribut auf false oder den android.supports_size_changes-Metadaten-Flag auf false.

Apps optimieren

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

Überschreiben deaktivieren oder deaktivieren

Keine Deaktivierung. Von verworfenen APIs migrieren.

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 dasselbe Ergebnis wie beim Überschreiben erzielen können

Beheben Sie das Problem im Anwendungscode mithilfe von APIs, die die Grenzen der das App-Fenster und die Offsets relativ zum App-Fenster und nicht Geräteanzeige und die Offsets relativ zum Gerätedisplay

Apps optimieren

Apps sollten View-APIs verwenden und dabei die Möglichkeit des Letterbox-Bilds berücksichtigen und der Mehrfenstermodus wird auf die App angewendet. Weitere Informationen finden Sie unter WindowMetricsCalculator.

Überschreiben deaktivieren oder deaktivieren

Property-Flag festlegen PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS an false.

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.

ÜBERSCHREIBUNG_KAMERA_KOMPAT_DEAKTIVIERT_FORCE_ROTATION

Deaktiviert die erzwungene Drehung. Verbessert die Nutzerfreundlichkeit einiger Apps.

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

Property-Flag festlegen PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION an false.

Apps optimieren

Verlassen Sie sich nicht auf die im Cache gespeicherte Ausrichtung des Kamerasensors oder auf Geräteinformationen. Für Informationen zur Kamerakompatibilität, siehe Jetzt neu: Kamerasucher und Unterstützung Oberflächen in der Kamera, deren Größe veränderbar ist App.

Überschreiben deaktivieren oder deaktivieren

Property-Flag festlegen PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION an true.

Property-Flags zum Anpassen der Überschreibung

<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 von Aktivitäten nach erzwungener Rotation. Verbessert die User Experience wenn eine Aktualisierung zu einem Zustandsverlust in Apps führt.

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

Property-Flag festlegen PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH an false.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

Überschreiben deaktivieren oder deaktivieren

Property-Flag festlegen PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH an true.

Property-Flags zum Anpassen der Überschreibung

<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, mit der die Aktivitätsaktualisierung 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:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBEN_KAMERA_KOMPAT_AKTIVIERT_ÜBERARBEITEN_VIA_PAUSE

Sorgt dafür, dass die Pakete, auf die die Aktivitäten angewendet werden, mit einem onResume() aktualisiert werden → onPause()onResume()-Zyklus anstelle von onResume()onStop()onResume(), nachdem Kamerakompatibilität erzwungen wird, Drehung zu erzwingen.

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

Property-Flag festlegen PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE an true.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

Überschreiben deaktivieren oder deaktivieren

Property-Flag festlegen PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE an false.

Property-Flags zum Anpassen der Überschreibung

<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 im Hochformat in die entgegengesetzte Ausrichtung zugeschnitten wird Kameraausrichtung stimmt nicht mit der natürlichen Geräteausrichtung überein. Viele Apps können Sie mit dieser Situation nicht umgehen und zeigen Sie ansonsten gestreckte Bilder an.

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

Property-Flag festlegen PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT an true.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

Überschreiben deaktivieren oder deaktivieren

Property-Flag festlegen PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT an false.

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 entfernen Sie die Überschreibung, wodurch 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 das Erzwungene createConfigForDefaultDisplay() API Vollbildaufnahme zu erstellen und die Privatsphäre der Nutzer zu gefährden, indem die Inhalte von Benachrichtigungen, die im Vollbildmodus aufgenommen werden, aber nicht im App-Bildschirm und alle Apps unabhängig vom Fenstermodus nutzen können.

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

Standardverhalten für die Medienprojektion zulassen (in Android 14, API implementiert) Ebene 34 mit createScreenCaptureIntent()) Nutzer können entscheiden, ob sie den ganzen Bildschirm oder nur eine App unabhängig vom Fenstermodus. Oder rufen Sie uns an: createScreenCaptureIntent(MediaProjectionConfig) mit dem Argument MediaProjectionConfig, das von einem Anruf an createConfigForUserChoice().

Apps optimieren

Nutzer können auswählen, ob sie das gesamte Display des Geräts oder eine App teilen möchten während der Medienprojektion, was ab Android 14 das Standardverhalten ist.

Die Größe der App (resizeableActivity="true") anpassen auf unterstützen den Mehrfenstermodus.

Überschreiben deaktivieren oder deaktivieren

Da der Datenschutz für Nutzer sehr ernst ist, kann Ihre App die Funktion nicht deaktivieren oder deaktivieren. dieser Überschreibung.

Property-Flags zum Anpassen der Überschreibung

Keine.

ADB-Befehle zum Testen der Überschreibung

Um die Überschreibung anzuwenden, wodurch die Deaktivierung der Teilfreigabe des Bildschirms durch die App abgebrochen wird (d. h. aktiviert die Teilfreigabe des Bildschirms):

adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

Um die Überschreibung zu entfernen, die es der App ermöglicht, einen Teilbildschirm zu deaktivieren Teilen:

adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

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

ÜBERSCHREIBEN_ENABLE_KOMPAT_FAKE_FOCUS

Aktiviert das Senden eines gefälschten Fokus für Apps ohne Fokus im Splitscreen-Modus. Einige Die Spiel-Engines warten darauf, dass sie sich konzentrieren, bevor sie den Inhalt der App zeichnen. und so: Mit falschem Fokus können Apps vermeiden, dass sie geschwärzt bleiben, wenn sie fortgesetzt werden und nicht aber im Fokus stehen.

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

Property-Flag festlegen PROPERTY_COMPAT_ENABLE_FAKE_FOCUS bis true.

Apps optimieren

Du kannst dieses Problem vermeiden, wenn deine App mehrere Ausrichtungen und Konfigurationsänderungen. Bereiten Sie Ihre App auf einen großen Bildschirm vor, indem Sie der Qualitätsrichtlinien für Apps mit großen Bildschirmen

Wenn du die Unity-Spiel-Engine verwendest, führe ein Upgrade auf Version 2019.4.40 oder höher durch und exportieren Sie Ihr Spiel noch einmal. Option Resizable Window beibehalten im Android Player aktiviert Einstellungen.

Überschreiben deaktivieren oder deaktivieren

Property-Flag festlegen PROPERTY_COMPAT_ENABLE_FAKE_FOCUS bis false.

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:Die Befehle werden nur vorübergehend angewendet oder entfernt.

Weitere Informationen