Android aktiviert einen Kompatibilitätsmodus für Apps, die Einschränkungen für die Ausrichtung oder Größenänderung deklarieren. Der Kompatibilitätsmodus sorgt für ein akzeptables App-Verhalten auf Geräten mit großem Bildschirm, faltbaren Smartphones und Desktop-Umgebungen, aber mit suboptimaler Nutzerfreundlichkeit.
Mit App-spezifischen Überschreibungen können Gerätehersteller, Inhaber virtueller Geräte1 und Nutzer das App-Verhalten ändern, um das App-Layout zu verbessern oder zu verhindern, dass Apps auf bestimmten Geräten nicht mehr funktionieren.
Android 16
Android 16 (API-Level 36) ignoriert Einschränkungen für die Bildschirmausrichtung, das Seitenverhältnis und die Größenänderung von Apps, um das Layout von Apps auf Formfaktoren mit einer Mindestbreite von >= 600 dp zu verbessern.
Die folgenden App-spezifischen Überschreibungen funktionieren nicht für Apps, die auf API-Level 36 ausgerichtet sind:
- FORCE_RESIZE_APP
- FORCE_NON_RESIZE_APP
- OVERRIDE_MIN_ASPECT_RATIO
- OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
- OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
- OVERRIDE_MIN_ASPECT_RATIO_LARGE
- OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN
- OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN
- OVERRIDE_ANY_ORIENTATION
- OVERRIDE_ANY_ORIENTATION_TO_USER
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
- OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA
- OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
- OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
- OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
- OVERRIDE_RESPECT_REQUESTED_ORIENTATION
Deaktivieren
Ihre App kann auf API-Level 36 ausgerichtet sein, aber das Verhalten von Android 16 deaktivieren. In diesem Fall ist OVERRIDE_ANY_ORIENTATION_TO_USER nicht anwendbar.
Manifestattribut deklarieren
Wenn Sie das Verhalten von API-Level 36 deaktivieren möchten, deklarieren Sie das Manifestattribut PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY.
Wenn Sie die Erfassung für eine bestimmte Aktivität deaktivieren möchten, legen Sie das Attribut im <activity>-Element fest:
<activity ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</activity>
Wenn Sie die Funktion für die gesamte App deaktivieren möchten, legen Sie das Attribut im <application>-Element fest:
<application ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</application>
Wenn Ihre App auf Android 16 (API-Level 36) oder höher ausgerichtet ist, wird durch dieses Attribut die Ausrichtung des Displays nicht gesperrt und die Bildschirmdrehung auf großen Displays nicht verhindert.
Referenzgeräte
Die folgenden Geräte erfordern möglicherweise App-spezifische Überschreibungen, da sie ungewöhnliche Konfigurationen haben oder Konfigurationen, die von Apps nicht gut unterstützt werden:
- Tablets:Die natürliche Ausrichtung einiger Tablets, z. B. des Pixel Tablet, ist das Querformat. Ein Gerät befindet sich in seiner natürlichen Ausrichtung, wenn
Display#getRotation()den WertSurface.ROTATION_0zurückgibt. Wenn Apps davon ausgehen, dassROTATION_0im Hochformat ist, stimmen App-Layouts und Kameravorschau möglicherweise nicht mit dem Gerätedisplay überein. - Faltbare Geräte im Querformat:Einige faltbare Geräte wie das Pixel Fold sind im zusammengeklappten Zustand im Hochformat, im aufgeklappten Zustand jedoch im Querformat. Wenn Apps davon ausgehen, dass die Ausrichtung im aufgeklappten Zustand das Hochformat ist, sind Flackerschleifen oder Layoutprobleme wahrscheinlich.
- Faltbare Flip-Phones:Aufgeklappte Flip-Phones sind in der Regel im Hochformat. Zusammengeklappt haben die Smartphones jedoch in der Regel ein kleines Display im Querformat. Apps müssen die verschiedenen Ausrichtungen der Displays erkennen und berücksichtigen.
- Externe Displays:Auf ausgewählten Geräten kann eine Desktop-Freiform-Fenster-Sitzung auf externen, verbundenen Displays gestartet werden. Apps müssen externe Displays nach Informationen wie Bildschirmgröße und Auflösung abfragen. Andernfalls können Apps falsche Annahmen über die Displays treffen, was zu fehlerhaftem App-Verhalten führen kann.
- Autodisplays:Viele, aber nicht alle Autodisplays sind im Querformat. Die Entwicklung von Apps für geparkte Autos für Autodisplays ähnelt der Entwicklung für Tablets.
Häufige Kompatibilitätsprobleme
Kompatibilitätsprobleme bei Apps treten am häufigsten aufgrund von Einschränkungen bei der App-Ausrichtung, der Größenänderung und des Seitenverhältnisses, einer falschen Handhabung der Ausrichtung der Kameravorschau und einer fehlerhaften Verwendung von APIs auf.
Letterboxing
Beim Letterboxing wird die App in der Mitte des Bildschirms oder auf großen Bildschirmen auf einer der beiden Seiten positioniert, um den Zugriff zu erleichtern. Der ungenutzte Anzeigebereich an den Seiten oder oben und unten in der App wird mit Mattes (einfarbigen Balken oder unscharfem Hintergrund) gefüllt.
Letterboxing kommt auf Geräten mit großen Bildschirmen häufig vor, da die Abmessungen und das Seitenverhältnis des Gerätedisplays in der Regel von denen von Standard-Smartphones abweichen, 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 mit Letterbox-Effekt angezeigt.
Problem
Die App unterstützt nicht alle Displaykonfigurationen, da sie eine feste Ausrichtung oder ein festes Seitenverhältnis hat oder ihre Größe nicht angepasst werden kann.
Zu den Konfigurationseinstellungen, mit denen die Ausrichtung und Größenänderung von Apps gesteuert werden, gehören:
screenOrientation: Gibt eine feste Ausrichtung für eine App an. Apps können die Ausrichtung auch zur Laufzeit mitActivity#setRequestedOrientation()festlegen.resizeableActivity: Gibt an, ob das System die Größe von Apps an Fenster mit unterschiedlichen Abmessungen anpassen kann. Unter Android 11 (API-Level 30) und niedriger wird angegeben, ob Apps den Mehrfenstermodus unterstützen. Unter Android 12 (API-Level 31) und höher wird damit angegeben, ob Apps den Mehrfenstermodus auf kleinen Bildschirmen (kompakte Fenstergrößenklasse) unterstützen. Unter Android 12 und höher unterstützen Apps den Mehrfenstermodus auf großen Bildschirmen (mittlere oder erweiterte Fenstergrößenklasse) unabhängig von dieser Einstellung.maxAspectRatio: Gibt das maximale Seitenverhältnis an, das von der App unterstützt wird.maxAspectRatiokann nur für Apps festgelegt werden, bei denenresizeableActivityauffalsegesetzt ist.minAspectRatio: Gibt das von der App unterstützte Mindestseitenverhältnis an.minAspectRatiokann nur für Apps festgelegt werden, bei denenresizeableActivityauffalsegesetzt ist.
Die App ist auf das Hochformat beschränkt und kann auf einem Gerät im Querformat nicht verwendet werden.
Optimierung
Die App sollte alle Ausrichtungen und Größen von Geräten und Mehrfenstermodi unterstützen. Entfernen Sie alle Einschränkungen für die Ausrichtung und das feste Seitenverhältnis aus Ihren App-Layouts und der App-Manifestdatei.
Die App unterstützt alle Bildschirmausrichtungen.
Problemumgehung für Kompatibilitätsprobleme
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 im Letterbox-Format angezeigt, um die Kontinuität zu wahren.
Ab Android 12 (API-Level 31) und 12L (API-Level 32) bietet die Plattform eine Reihe von Verbesserungen für Apps im Letterbox-Format. Gerätehersteller implementieren die Verbesserungen der Benutzeroberfläche. Sie müssen keine zusätzlichen Entwicklungsarbeiten für Ihre App durchführen, um von den Verbesserungen zu profitieren.
In Android 12 (API-Level 31) werden die folgenden ästhetischen Verbesserungen eingeführt, die von Geräteherstellern konfiguriert werden können:
- Abgerundete Ecken:Die Ecken des App-Fensters haben ein eleganteres Design.
- Transparenz der Systemleiste:Status- und Navigationsleisten, die die App überlagern, sind halbtransparent, sodass Symbole in den Leisten immer über dem Letterbox-Hintergrund sichtbar sind.
- Konfigurierbares Seitenverhältnis: Das Seitenverhältnis der App kann angepasst werden, um die Darstellung der App zu verbessern.
Abbildung 2: Letterbox-App mit Verbesserungen der Benutzeroberfläche.
12L (API-Level 32) bietet die folgenden funktionalen Verbesserungen:
Konfigurierbare Positionierung:Auf großen Bildschirmen können Gerätehersteller die App auf der linken oder rechten Seite des Displays positionieren, um die Interaktion zu erleichtern.
Neu gestaltete Schaltfläche zum Neustarten:Gerätehersteller können die Schaltfläche zum Neustarten für den Größenkompatibilitätsmodus neu gestalten, damit Nutzer sie besser erkennen.
In Android 13 (API-Level 33) wird ein Dialogfeld für Nutzer hinzugefügt, in dem erklärt wird, wie die Letterbox-App auf dem Bildschirm positioniert oder die Letterbox im Splitscreen-Modus verwendet wird:
Abbildung 3: Letterbox-App mit Dialogfeld für Nutzerinformationen.
Kompatibilitätsmodus für die Größe
Der Größenkompatibilitätsmodus ist ein Letterbox-Modus, bei dem das Seitenverhältnis der App beibehalten wird und der ein Steuerelement für den Neustart enthält. Mit dem Steuerelement können Nutzer die App neu starten und die Anzeige neu zeichnen. Android ruft den Größenkompatibilitätsmodus für Apps auf, deren Größe nicht angepasst werden kann. Wenn eine Aktivität in einen Display-Container verschoben wird, der nicht mit den Abmessungen der Aktivität kompatibel ist, kann das System die App so skalieren, dass sie das Display des Geräts in mindestens einer Dimension ausfüllt.
Zu den Änderungen an der Gerätekonfiguration, die den Größenkompatibilitätsmodus auslösen können, gehören:
- Bildschirm drehen
- Faltbares Gerät wird zusammen- oder aufgeklappt
- Zwischen Vollbild- und Splitscreen-Anzeigemodus wechseln
Problem
Der Größenkompatibilitätsmodus gilt in der Regel für Aktivitäten, die in Bezug auf Ausrichtung oder Seitenverhältnis eingeschränkt sind und so konfiguriert sind (oder vom System so bestimmt werden), dass ihre Größe nicht geändert werden kann.
Ihre App gilt als anpassbar und wird nicht in den Größenkompatibilitätsmodus versetzt, wenn sie eines der folgenden Kriterien erfüllt:
- Größe kann mit
resizeableActivity="true"geändert werden - Unterstützt den Bild-im-Bild-Modus (BiB)
- Ist eingebettet
- Das gerätespezifische Überschreiben von
FORCE_RESIZE_APPwurde vom Gerätehersteller angewendet (von der App festgelegte Eigenschaften werden ignoriert).
Wenn deine App keine der Bedingungen erfüllt, gilt sie als nicht anpassbar und wird möglicherweise in den Größenkompatibilitätsmodus versetzt.
Apps, deren Größe nicht angepasst werden kann, stürzen im Mehrfenstermodus ab.
Optimierung
Die App sollte alle Displaygrößen unterstützen. Wenn Sie die Größe Ihrer App anpassbar machen möchten, setzen Sie im App-Manifest das Attribut android:resizeableActivity des Elements <activity> oder <application> auf true. Entwerfen Sie responsive/adaptive Layouts für Ihre App. Weitere Informationen finden Sie unter Verschiedene Displaygrößen unterstützen und Mehrfenstermodus unterstützen.
Die App funktioniert in allen Fenstergrößen.
Problemumgehung für Kompatibilitätsprobleme
Android versetzt eine App in den Größenkompatibilitätsmodus, 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 ein Steuerelement für den Neustart an, mit dem der App-Prozess neu erstellt wird. Dadurch wird die Aktivität neu erstellt und die Anzeige neu dargestellt. Weitere Informationen finden Sie unter Prozesse und Threads – Übersicht.
App, die nur im Hochformat angezeigt werden kann, wird im Querformat mit Letterbox-Effekt dargestellt und über das Steuerelement für den Neustart neu skaliert.
Kompatibilitätsmodus für Displays
Der Anzeigekompatibilitätsmodus verhindert, dass eine App neu gestartet wird, wenn sie zwischen verschiedenen Displays verschoben wird. Dies kann eine Konfigurationsänderung auslösen, z. B. eine Änderung des Farbmodus, der Touchscreen-Verfügbarkeit oder der Bildschirmdichte.
Der Kompatibilitätsmodus für die Anzeige ist standardmäßig für Spiele aktiviert (basierend auf dem Flag android:appCategory), um die Stabilität und Kontinuität zu verbessern.
Im Gegensatz zum Größenkompatibilitätsmodus wird im Anzeigekompatibilitätsmodus die Konfiguration der App nicht eingefroren. Die App kann weiterhin alle Konfigurationsupdates über APIs wie den Callback onConfigurationChanged() empfangen, wird aber von einem störenden Neustart verschont. Das bedeutet, dass Spiele, die APIs wie onConfigurationChanged() ordnungsgemäß unterstützen, ihre Benutzeroberfläche auch dann responsiv aktualisieren können, wenn sie sich im Anzeigekompatibilitätsmodus befinden.
Wenn Sie den Anzeigekompatibilitätsmodus deaktivieren und Konfigurationsänderungen in Ihrer App verarbeiten möchten, deklarieren Sie die Unterstützung für die Konfigurationsänderungen in der Datei AndroidManifest.xml der App und verarbeiten Sie die Konfigurationsänderungen im Callback „onConfigurationChanged()“.
<activity
android:name=".MyGameActivity"
android:configChanges="colorMode|touchscreen|density|...">
...
</activity>
Flackernde Schleifen
Wenn eine App nicht alle Anzeigeausrichtungen unterstützt, fordert sie möglicherweise wiederholt neue Ausrichtungen an, wenn eine Konfigurationsänderung auftritt. Dadurch entsteht eine Endlosschleife, die dazu führt, dass das Display flackert oder die App sich endlos dreht.
Problem
Unter Android 12 (API-Level 31) und höher können Gerätehersteller ihre Geräte so konfigurieren, dass von Apps festgelegte Ausrichtungsbeschränkungen ignoriert und stattdessen Kompatibilitätsmodi erzwungen werden. Ein faltbares Gerät könnte beispielsweise die Einstellung android:screenOrientation="portrait" einer Aktivität ignorieren, wenn die Aktivität auf dem inneren Bildschirm des Geräts im Querformat in Tablet-Größe angezeigt wird.
Wenn die Ausrichtungsbeschränkungen einer App ignoriert werden, kann die App ihre Ausrichtung programmatisch festlegen, indem sie Activity#setRequestedOrientation() aufruft. Der Aufruf löst einen Neustart der App aus, wenn die App keine Konfigurationsänderungen verarbeitet (siehe Konfigurationsänderungen verarbeiten). Nach dem Neustart werden die Ausrichtungseinschränkungen der App wieder ignoriert, die App wiederholt den Aufruf von setRequestedOrientation(), der Aufruf löst einen Neustart der App aus und so weiter in einer Endlosschleife.
Eine weitere Möglichkeit ist, dass die natürliche Ausrichtung (die übliche Ausrichtung, wie von Android festgelegt) eines Gerätebildschirms das Querformat ist. Das heißt, der Aufruf von Display#getRotation() gibt Surface.ROTATION_0 zurück, während das Gerät ein Querformat-Seitenverhältnis hat. In der Vergangenheit wurde bei Apps davon ausgegangen, dass Display.getRotation() =
Surface.ROTATION_0 bedeutet, dass sich das Gerät im Hochformat befindet. Das ist jedoch nicht immer der Fall, z. B. auf dem inneren Display einiger faltbarer Geräte und auf einigen Tablets.
Eine App im Querformat auf einem inneren Display eines faltbaren Geräts könnte die Bildschirmdrehung prüfen, den Wert ROTATION_0 erhalten, davon ausgehen, dass die natürliche Ausrichtung des Geräts das Hochformat ist, und setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
) aufrufen, um das App-Layout neu zu konfigurieren. Nach dem Neustart der App (im Querformat) wird die Bildschirmausrichtung möglicherweise noch einmal geprüft, der Wert ROTATION_0 empfangen, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) aufgerufen und die Endlosschleife fortgesetzt.
Eine App, die nur im Querformat angezeigt werden kann, ruft auf einem Display im Hochformat wiederholt Activity#setRequestedOrientation() auf.
Optimierung
Apps sollten Folgendes nicht tun:
- Legen Sie mit
Activity#setRequestedOrientation()in der AktivitätsmethodeonCreate()eine Standardausrichtung fest, da die Ausrichtungsanfrage unerwartet durch nicht verarbeitete Konfigurationsänderungen ausgelöst werden kann. - Annehmen, dass die natürliche Ausrichtung des Geräts (
ROTATION_0) das Hochformat ist - Lege die Ausrichtung anhand von Signalen fest, die nicht mit der aktuellen Fenstergröße zusammenhängen, z. B.
Display#getRotation(), Vorhandensein einesFoldingFeatureoder eingestellte APIs.
Die App verarbeitet die Konfigurationsänderung, hat keine Ausrichtungseinschränkungen und gerät daher nicht in eine Flackerschleife.
Problemumgehung für Kompatibilitätsprobleme
Android ignoriert Aufrufe von Activity#setRequestedOrientation() in den folgenden Situationen:
Die Aktivität wurde bereits durch einen vorherigen Aufruf der Methode neu gestartet oder die erzwungene Drehung für die Kamerakompatibilität wurde aktiviert (siehe Kameravorschau unten).
Gerätehersteller können dieses Verhalten mit
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATIONauf eine App anwenden.Die Aktivität hat mehr als zwei Ausrichtungsanfragen in einer Sekunde gestellt, was auf eine Schleife hindeutet. Von den beiden Anfragen in der Schleife verwendet Android diejenige, die den Anzeigebereich der App maximiert.
Gerätehersteller können dieses Verhalten mit
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTEDauf eine App anwenden.Inhaber virtueller Geräte haben den Methodenaufruf auf ausgewählten Geräten überschrieben.
Kameravorschau
Die Kameravorschau (oder der Sucher) von Kamera-Apps kann auf Tablets, Laptops und faltbaren Displays falsch ausgerichtet oder verzerrt sein.
Weitere Informationen findest du unter Kameravorschau im Desktop-Freiform-Fenster.
Problem
Im Android Compatibility Definition Document heißt es, dass ein Kamerabildsensor „so ausgerichtet sein MUSS, dass die lange Seite der Kamera mit der langen Seite 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 ihren Kamerasensoren kann jedoch das Querformat sein. Außerdem können neue Formfaktoren wie faltbare Smartphones mehrere natürliche Ausrichtungen und mehrere Kamerasensoren in unterschiedlichen Ausrichtungen haben.
Wenn eine Aktivität mit einer Kameraausrichtung gestartet wird, die die App nicht erwartet, oder wenn zwischen verschiedenen Kameras oder Gerätebildschirmen (bei faltbaren Geräten) gewechselt wird, kann dies zu einer falsch ausgerichteten oder verzerrten Kameravorschau führen.
Falsch ausgerichtete und verzerrte Kameravorschau auf einem faltbaren Gerät mit großem Display.
Optimierung
Kamera-Apps müssen die Geräteausrichtung und die Ausrichtung des Kamerasensors korrekt erkennen und verwalten, um eine korrekt ausgerichtete und skalierte Kameravorschau anzuzeigen. Apps müssen die Geräterotation, die Sensorrotation und das Seitenverhältnis des Bildschirms oder Fensters berechnen und die Ergebnisse dann auf die Kameravorschau anwenden. Eine ausführliche Anleitung finden Sie unter Kameravorschau und Einführung in den Kamerasucher.
Die Kameravorschau ist in allen Geräteausrichtungen korrekt ausgerichtet und skaliert.
Problemumgehung für Kompatibilitätsprobleme
Ein Gerät befindet sich in der natürlichen Ausrichtung, wenn Display#getRotation() den Wert 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 auf das Hochformat beschränkt sind, an der natürlichen Ausrichtung des Geräts aus. Das ist das, was die meisten Apps erwarten. Android schneidet das Bild des Kamerasensors auch zu, wenn die Sensorausrichtung Querformat und die Kameravorschau Hochformat ist. Zu den spezifischen Problemumgehungen gehören:
Kameravorschau für Apps, die nur im Hochformat angezeigt werden, drehen:Apps, die nur im Hochformat angezeigt werden, erwarten, dass die natürliche Ausrichtung des Geräts und die Ausrichtung des Kamerasensors im Hochformat sind. Unter Android 12 (API-Level 31) und höher können Apps jedoch in mehreren Geräteausrichtungen ausgeführt werden, wenn Gerätehersteller die Ausrichtungsspezifikation ignorieren.
Wenn eine App, die nur im Hochformat angezeigt werden kann, mit der Kamera verbunden ist, erzwingt Android eine Drehung der 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 das Vollbild-Hochformat gedreht, um es an die natürliche Ausrichtung des Geräts anzupassen. Die App nimmt nach der erzwungenen Drehung den gesamten Bildschirm ein.
Tablet – Drehung einer App erzwingen, die auf das Hochformat beschränkt ist.
Auf dem inneren Querformat-Bildschirm von faltbaren Geräten (siehe Referenzgeräte) werden Aktivitäten, die nur im Hochformat angezeigt werden, ins Querformat gedreht, um sie an die natürliche Ausrichtung des aufgeklappten Geräts anzupassen. Die App wird nach dem Erzwingen der Drehung im Letterbox-Format angezeigt.
Faltbares Gerät – Drehung einer App erzwingen, die auf das Hochformat beschränkt ist. Die App wird auch im Letterbox-Format angezeigt.
Zuschneiden der inneren Frontkamera:Der Sensor der inneren Frontkamera ist bei einigen faltbaren Geräten im Querformat ausgerichtet. Zusätzlich zum erzwungenen Drehen der Kameravorschau auf dem inneren Display des faltbaren Geräts schneidet Android das Sichtfeld der inneren Frontkamera (Querformat) so zu, dass der Sensor eine Ansicht entgegengesetzt zur Geräteausrichtung erfasst.
Aktualisierung der Kameravorschau erzwingen:Das System wechselt nach der erzwungenen Drehung zwischen den Aktivitätsmethoden
onStop()undonStart()(standardmäßig) oderonPause()undonResume()(angewendet durch die app-spezifische Überschreibung OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE), um sicherzustellen, dass die Kameravorschau richtig angezeigt wird.Skalierung des Seitenverhältnisses:Das System ändert das Seitenverhältnis der erzwungen gedrehten Kameravorschau dynamisch auf ein höheres Mindestseitenverhältnis, damit die Kameravorschau richtig skaliert wird.
App-Entwickler können diese Problemumgehungen überschreiben, wenn die Apps die Kameravorschau korrekt verarbeiten. Weitere Informationen finden Sie unter App-spezifische Überschreibungen.
Häufig missbrauchte APIs
Da Android jetzt Funktionen wie den Multi-Window-Modus und Geräte wie faltbare Smartphones unterstützt, wurden ältere APIs eingestellt und durch aktuelle APIs ersetzt, die für alle Displaygrößen und Geräteformfaktoren geeignet sind. Die verworfenen APIs sind jedoch weiterhin für die Abwärtskompatibilität verfügbar.
Einige View-APIs sind für spezielle Zwecke konzipiert, die von Entwicklern nicht immer gut verstanden werden.
Problem
Entwickler verwenden weiterhin die verworfenen Display-APIs und gehen fälschlicherweise davon aus, dass die APIs die App-Grenzen anstelle der Grenzen des Geräteanzeigebereichs zurückgeben. Oder Entwickler verwenden fälschlicherweise spezielle Ansichts-APIs, um allgemeine Anzeigemesswerte abzurufen.
Das führt zu Fehlberechnungen bei der Neupositionierung von UI-Elementen nach Größenänderungen des App-Fensters, was wiederum Layoutprobleme verursacht.
Eingestellte und häufig falsch verwendete Display APIs:
Weitere Informationen findest du unter Unterstützung für den Mehrfenstermodus.
Missbräuchlich verwendete View APIs:
Verworfene API berechnet App-Grenzen falsch. App-Inhalte werden außerhalb des Bildschirms angezeigt.
Optimierung
Verlassen Sie sich bei der Positionierung von UI-Elementen nie auf die physische Displaygröße. Migrieren Sie Ihre App zu APIs, die auf WindowMetrics basieren, einschließlich der folgenden WindowManager-APIs:
Plattform:
Jetpack:
Die API berechnet die Messwerte für das App-Fenster korrekt.
Problemumgehung für Kompatibilitätsprobleme
Zwei Überschreibungen passen die verworfenen Display-APIs und die falsch verwendeten View-APIs an, um die App-Grenzen zurückzugeben:
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 angewendet, die für den Größenkompatibilitätsmodus infrage kommen.
Transparente Aktivitäten
Transparente Aktivitäten sind das Ergebnis transparenter Hintergrundstile, z. B.:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Designs, die sich auf Dialogfelder beziehen, z. B. Theme.MaterialComponents.Dialog, können Stile enthalten, die Aktivitäten transparent machen.
Transparente Aktivitäten decken nicht den gesamten verfügbaren Anzeigebereich ab. Daher sind sie schwer zu verwalten, da sich der verfügbare Anzeigebereich aufgrund von Konfigurationsänderungen wie Gerätedrehung, Ein- und Ausklappen des Geräts und Mehrfenstermodus ändern kann.
Problem
Eine transparente Aktivität sollte den Grenzen der ersten nicht transparenten Aktivität unter der transparenten Aktivität im Aktivitätsstapel der Aufgabe entsprechen. Eine undurchsichtige Aktivität, die ein Berechtigungsdialogfeld startet, kann jedoch ein Trampolin sein (eine Aktivität, die eine andere Aktivität startet und dann verschwindet). Daher kann das System die Grenzen der Trampolinaktivität, die die transparente Berechtigungsdialogfeld-Aktivität gestartet hat, nicht bestimmen.
Das Dialogfeld ist falsch positioniert, weil die Aktivität über ein Trampolin gestartet wurde.
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 während des gesamten Lebenszyklus der transparenten Aktivität verfügbar sein, von der Erstellung bis zur Zerstörung der Aktivität. Aus diesem Grund sollten Berechtigungsanfragen nicht über Trampolin-Aktivitäten gestartet werden.
Wenn eine Trampolin-Aktivität eine Berechtigungsanfrage startet, kann der Nutzer das Dialogfeld für die Berechtigung möglicherweise nicht sehen, da die Trampolin-Aktivität zerstört wurde, bevor der Nutzer die Möglichkeit hatte, auf das Dialogfeld zu reagieren. Außerdem wurden die Abmessungen und die Position der Dialogfeld-Aktivitä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 festlegt oder weil der Inhalt der Aktivität nicht den verfügbaren Anzeigebereich ausfüllt. Wenn eine transparente Aktivität den verfügbaren Anzeigebereich 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) den verfügbaren Platz nicht ausfüllt, liegt es an dir, ob du abgerundete Ecken anwenden möchtest oder nicht.
Berechtigungsdialoge füllen den verfügbaren Anzeigebereich nicht aus, da im Dialoglayout in der Regel LayoutParams.WRAP_CONTENT anstelle von LayoutParams.MATCH_PARENT verwendet wird.
Dialogfeld mit abgerundeten Ecken, das korrekt über der sichtbaren Startaktivität positioniert ist.
Problemumgehung für Kompatibilitätsprobleme
Aktivitäten, die Dialogaktivitäten starten, sollten sichtbar bleiben, bis der Nutzer auf den Dialog reagiert hat.
Das System sorgt dafür, dass eine transparente Aktivität alle Einschränkungen von der ersten nicht transparenten Aktivität unter der transparenten Aktivität im Aktivitätsstapel übernimmt, einschließlich Einschränkungen in Bezug auf:
- Kompatibilitätsmodus für die Größe
- Ausrichtung
- Seitenverhältnis
Unity-Spiele
Unity-Spiele werden auf Android-Geräten im Vollbild- oder Mehrfenstermodus ausgeführt. Bei vielen Unity-Spielen geht jedoch der Fokus verloren und es werden keine Inhalte mehr dargestellt, wenn die App in den Mehrfenstermodus versetzt wird.
Problem
Unity hat in Unity 2019.4 die Option Resizable Window hinzugefügt, um den Multi-Window-Modus unter Android zu unterstützen. Die ursprüngliche Implementierung reagierte jedoch nicht korrekt auf den Aktivitätslebenszyklus im Mehrfenstermodus, was dazu führte, dass UnityPlayer die Wiedergabe anhielt, wenn die App den Fokus verlor. Der Player hat einen schwarzen Bildschirm oder den letzten, eingefrorenen Frame des Spiels gerendert. Das Gameplay wurde erst fortgesetzt, wenn der Nutzer auf den Bildschirm tippte. Viele Apps, die die Unity-Engine verwenden, sind von diesem Problem betroffen und werden im Mehrfenstermodus als schwarzes Fenster gerendert.
Das Spiel verliert im Mehrfenstermodus den Fokus und wird als schwarzes Fenster gerendert.
Optimierung
Aktualisieren Sie Unity auf Version 2019.4.40 oder höher und exportieren Sie Ihr Spiel noch einmal. Lassen Sie die Option Resizable Window in den Android-Playereinstellungen aktiviert. Andernfalls wird das Spiel pausiert, wenn es nicht im Fokus ist, obwohl es im Mehrfenstermodus vollständig sichtbar ist.
Das Spiel rendert Inhalte im Mehrfenstermodus auch dann korrekt, wenn es nicht im Fokus ist.
Problemumgehung für Kompatibilitätsprobleme
Gerätehersteller können die App-spezifische Überschreibung OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS anwenden, um einer App im Mehrfenstermodus ein gefälschtes Fokussierungsereignis bereitzustellen. Durch das Überschreiben kann die Aktivität Inhalte neu zeichnen und wird nicht ausgeblendet.
Desktop-Freiform-Fenster
Wenn Apps in einer Desktop-Freiform-Fenster-Umgebung ausgeführt werden, können zusätzliche Kompatibilitätsmodi auftreten.
Apps mit gesperrter Ausrichtung können beliebig in der Größe angepasst werden. Auch wenn eine Aktivität auf das Hochformat festgelegt ist, können Nutzer die Größe der App auf das Querformat ändern.
Apps mit gesperrter Ausrichtung können weiterhin frei in der Größe angepasst werden.
Wenn eine Aktivität jedoch als nicht anpassbar deklariert ist (resizeableActivity = false), wird die Benutzeroberfläche der Aktivität skaliert, wobei das Seitenverhältnis beibehalten wird.
Bei Aktivitäten, die als nicht skalierbar deklariert sind, wird die Benutzeroberfläche skaliert.
Kameravorschau im Desktop-Freiform-Fenster
Wenn eine App im Desktop-Freiform-Fenstermodus ausgeführt wird, können sich die Displaydrehung und die Fensterausrichtung von der Vollbildanzeige auf Standard-Smartphones unterscheiden.
Problem
Apps gehen oft davon aus, dass die Geräteausrichtung und die Ausrichtung des Kamerasensors im Hochformat sind. Das kann zu einer falsch 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 anzuzeigen. Apps müssen die Gerätedrehung, die Sensordrehung und das Seitenverhältnis des Fensters berechnen und die Ergebnisse dann auf die Kameravorschau anwenden, die auch auf Änderungen der Fensterkonfiguration reagieren sollte. Eine ausführliche Anleitung finden Sie unter Kameravorschau.
Problemumgehung für Kompatibilitätsprobleme
Wenn Apps mit fester Ausrichtung im Desktop-Freiform-Fenster eine Kameravorschau starten, kann das System eine Kamerakompatibilitätsbehandlung auslösen, um gestreckte und seitliche Vorschauen zu vermeiden.
Bei der Behandlung wird die Umgebung so eingeschränkt, dass sie der angeforderten Ausrichtung entspricht:
Letterbox-Format für das App-Fenster in der angeforderten Ausrichtung verwenden:Dadurch werden Probleme mit der Streckung aufgrund einer ungeeigneten Skalierung vermieden.
Sandbox für die Displaydrehung: Die Behandlung simuliert, dass das Gerät in der angeforderten Ausrichtung platziert wird. Da die häufigste falsche Annahme für Kameravorschauen darin besteht, dass die App auf einem Gerät im Hochformat ausgeführt wird, wird die Displaydrehung für Apps, die das Hochformat anfordern, auf 0 Grad und für Geräte, die das Querformat anfordern, auf 90 Grad beschränkt.
Kamerazuschnitt:Wenn sich die Displayausrichtung geändert hat, wird dies im Kamerafeed widergespiegelt: Wenn sich ein Gerät im Querformat befindet und die Behandlung für eine App ausgelöst wird, die das Hochformat anfordert, wird das Sichtfeld der Kamera so zugeschnitten, dass es dem einer Kamera im Hochformat ähnelt.
Kamerafeed drehen und zuschneiden:Das System durchläuft nach der Anwendung der Behandlung die Aktivitätsmethoden
onStop()undonStart()(standardmäßig) oderonPause()undonResume()(angewendet durch die app-spezifische Überschreibung OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE), um sicherzustellen, dass die Kameravorschau richtig angezeigt wird.
App-Entwickler können diese Problemumgehungen überschreiben, wenn die Apps die Kameravorschau korrekt verarbeiten. Weitere Informationen finden Sie unter App-spezifische Überschreibungen.
Größe wird geändert
Wenn eine simulierte angeforderte Ausrichtung aktiv ist, wird die Sucher-UI beim Ändern der Fenstergröße skaliert, wobei das Seitenverhältnis beibehalten wird. Die Größe des restlichen App-Fensters kann frei angepasst werden.
Größe eines Fensters mit einem Kamerasucher anpassen
App auf Kompatibilitätsprobleme testen
Wenn Sie Ihre App testen und herausfinden möchten, wie sie sich auf verschiedenen Formfaktoren verhält, können Sie die folgenden Ressourcen nutzen:
- Geräte-Streaming:Wenn Sie Ihre App auf Produktionsgeräten (einschließlich Referenzgeräten) testen möchten, die in Google-Rechenzentren gehostet werden, lesen Sie den Hilfeartikel Android Device Streaming, powered by Firebase .
- Emulatoren in Android Studio:Informationen zum Erstellen von Emulatoren für Referenzgeräte finden Sie unter Virtuelle Geräte erstellen und verwalten.
- Android Studio-Emulator mit anpassbarer Größe:Informationen zum Zugriff auf virtuelle Geräte finden Sie unter Apps im Android-Emulator ausführen.
Ist Letterbox-Bild
Prüfe, ob jede Aktivität den gesamten für die App verfügbaren Anzeigebereich nutzen kann. Deklariere zuerst den folgenden Code in deinem Testordner:
Kotlin
fun isLetterboxed(activity: AppCompatActivity): 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(AppCompatActivity 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ühre dann einen Test aus, um das Verhalten zu prüfen und sicherzustellen, dass die Zielaktivität nicht im Letterbox-Format angezeigt wird:
Kotlin
@get:Rule val activityRule = ActivityScenarioRule(MainActivity::class.java) @Test fun activity_launched_notLetterBoxed() { activityRule.scenario.onActivity { assertFalse(it.isLetterboxed()) } }
Java
@Rule public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class); @Test public void activity_launched_notLetterBoxed() { try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity( activity -> { assertFalse(activity.isLetterboxed()); }); } }
Idealerweise solltest du diese Art von Test nur so lange ausführen, bis er erfolgreich ist und bestätigt, dass die Aktivitäten deiner App den gesamten für die App verfügbaren Anzeigebereich einnehmen. Teste deine 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. Beispiel: Die Überschreibung FORCE_RESIZE_APP weist das System an, den Größenkompatibilitätsmodus zu umgehen und die Größe der App an die Displayabmessungen anzupassen, auch wenn im App-Manifest resizeableActivity="false" angegeben ist.
Gerätehersteller wenden Überschreibungen auf ausgewählte Apps oder alle Apps auf bestimmten Geräten an. Unter Android 14 (API-Level 34) und höher können Nutzer über die Geräteeinstellungen Überschreibungen auf Apps anwenden. Unter Android 16 (API-Level 36) und höher können Inhaber virtueller Geräte Überschreibungen auf ausgewählten Geräten anwenden, die sie verwalten.
App-spezifische Überschreibungen durch Nutzer
Unter Android 14 und höher können Nutzer das Seitenverhältnis von Apps über ein Einstellungsmenü ändern. Geräte mit großem Display, z. B. Referenzgeräte, implementieren das Menü.
Das Menü enthält eine Liste aller auf dem Gerät installierten Apps. Nutzer wählen eine App aus und legen dann das Seitenverhältnis der App auf 3:4, 1:1, Vollbild oder einen anderen vom Gerätehersteller konfigurierten Wert fest. Nutzer können das Seitenverhältnis auch auf den Standardwert der App zurücksetzen, der im App-Manifest angegeben ist.
Apps können die Kompatibilitätsüberschreibung deaktivieren, indem sie die folgenden PackageManager.Property-Tags festlegen:
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
Wenn Sie die Kompatibilitätsüberschreibung für das Seitenverhältnis deaktivieren möchten, fügen Sie Ihrem App-Manifest das Attribut hinzu und setzen Sie den Wert auf
false:<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 das Attribut auf
truefestlegen, hat das keine Auswirkungen.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
Wenn Sie die Vollbildoption der Kompatibilitätsüberschreibung für das Seitenverhältnis des Nutzers deaktivieren möchten, fügen Sie die Property Ihrem App-Manifest hinzu und legen Sie den Wert auf
falsefest:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE" android:value="false" /> </application>Die Vollbildoption wird aus der Liste der Seitenverhältnisoptionen in den Geräteeinstellungen entfernt. Nutzer können die Vollbildüberschreibung nicht auf deine App anwenden.
Wenn Sie dieses Attribut auf
truefestlegen, 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 Platz auf dem Display verschiedene Layouts zu unterstützen.
Gerätespezifische Überschreibungen pro App
Gerätehersteller und Inhaber virtueller Geräte (ausgewählte vertrauenswürdige und privilegierte Apps) wenden Überschreibungen pro App auf bestimmten Geräten an, darunter Tablets, faltbare Geräte, ChromeOS-Geräte und Autodisplays. Auf den Referenzgeräten werden einige der Überschreibungen standardmäßig auf eine Vielzahl von Apps angewendet.
Apps können die meisten Überschreibungen deaktivieren (siehe Tabelle App-spezifische Überschreibungen unten).
Du kannst deine App mit aktivierten oder deaktivierten Überschreibungen mithilfe des Kompatibilitäts-Frameworks testen (siehe Tools für das Kompatibilitäts-Framework). Wenn diese Option aktiviert ist, gelten die Überschreibungen für die gesamte App.
Du kannst auch die Android Debug Bridge (adb) verwenden, um Überschreibungen zu aktivieren oder zu deaktivieren und festzulegen, welche Überschreibungen für deine App gelten.
So aktivieren oder deaktivieren Sie Überschreibungen:
adb shell am compat enable/disable <override name/id> <package>
Prüfe für die Referenzgeräte, welche Überschreibungen für deine 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 Hinweise dazu, wie Sie Ihre App so optimieren können, dass sie nicht auf Überschreibungen angewiesen ist. Sie können Ihrem App-Manifest Attribut-Flags hinzufügen, um einige Überschreibungen zu deaktivieren.
| App-spezifische Überschreibungen | |||
|---|---|---|---|
| Typ | Name | ID | Beschreibung |
| Eingabekompatibilität | OVERRIDE_MOUSE_TO_TOUCH | 413207127 | Konvertiert MotionEvent-Instanzen von einem Mausgerät in Touch-Events, indem die MotionEvent-Quelle und der Tooltyp neu geschrieben werden, wenn sie an die Anwendung übermittelt werden. |
| Größenänderung | FORCE_RESIZE_APP | 174042936 | Umgeht den Kompatibilitätsmodus für die Seitengröße der App bei Konfigurationsänderungen. |
| 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, damit andere Überschreibungen des Seitenverhältnisses angewendet werden können. |
| OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | Wenn diese Option aktiviert ist (Standardeinstellung), wird der Bereich auf Aktivitäten im Hochformat beschränkt. | |
| OVERRIDE_MIN_ASPECT_RATIO_SMALL | 349045028 | Ändert das minimale Seitenverhältnis auf 4:3. | |
| OVERRIDE_MIN_ASPECT_RATIO_MEDIUM | 180326845 | Ändert das minimale Seitenverhältnis auf 3:2. | |
| OVERRIDE_MIN_ASPECT_RATIO_LARGE | 180326787 | Ändert das minimale Seitenverhältnis auf 16:9. | |
| OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN | 208648326 | Ändert das minimale Seitenverhältnis, sodass es 50% der Displaygröße (oder dem Seitenverhältnis des geteilten Bildschirms) entspricht. | |
| OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN | 218959984 | Deaktiviert die Überschreibung des Mindestseitenverhältnisses, sodass Apps im Hochformat im Vollbildmodus angezeigt werden. | |
| Ausrichtung | OVERRIDE_ANY_ORIENTATION | 265464455 | Ermöglicht das Überschreiben jeder Ausrichtung. |
| OVERRIDE_ANY_ORIENTATION_TO_USER | 310816437 | Überschreibt Einschränkungen für Ausrichtung, Größenänderung und Seitenverhältnis. | |
| OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT | 265452344 | Überschreibt die Ausrichtung auf das Hochformat, wenn eine Aktivität eine undefinierte Ausrichtung hat. | |
| OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR | 265451093 | Überschreibt die Ausrichtung auf nosensor (natürliche Ausrichtung des Geräts verwenden), wenn eine Aktivität eine nicht definierte Ausrichtung hat. |
|
| OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE | 266124927 | Dreht Apps, die nur im Querformat angezeigt werden können, um 180 Grad. | |
| OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA | 265456536 | Beschränkt den Umfang der Ausrichtungsüberschreibung auf den Zeitraum, in dem die App mit der Kamera verbunden ist. | |
| OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION | 255940284 | Legt die Anzeige auf die feste natürliche Ausrichtung im Querformat fest, wenn eine Aufgabe im Vollbildmodus angezeigt wird (auch im Letterbox-Format). | |
| OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION | 254631730 | Ignoriert Ausrichtungsanfragen von der App, um Endlosschleifen bei der Drehung zu vermeiden. | |
| OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | Ignoriert wiederholte Ausrichtungsanfragen, während eine Aktivität neu gestartet wird. Wenn Android erkennt, dass eine App innerhalb einer Sekunde mindestens zwei neue Ausrichtungen anfordert, wird dies als Endlosschleife für die Drehung betrachtet und die Überschreibung wird angewendet. | |
| OVERRIDE_RESPECT_REQUESTED_ORIENTATION | 236283604 | Verhindert Letterboxing, indem die Einstellung des Geräteherstellers zum Ignorieren von Ausrichtungsanfragen deaktiviert wird. | |
| Sandbox-APIs | NEVER_SANDBOX_DISPLAY_APIS | 184838306 | Verhindert, dass das Verhalten von Display-APIs geändert wird. |
| ALWAYS_SANDBOX_DISPLAY_APIS | 185004937 | Erzwingt, dass die Display-APIs in der App App-Grenzen zurückgeben. Display-APIs geben logische Grenzen für den Anzeigebereich zurück. Manchmal wird jedoch davon ausgegangen, dass Display-APIs App-Grenzen zurückgeben, was zu Problemen mit der Benutzeroberfläche führt. |
|
| OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS | 237531167 | Erzwingt, dass die in der App verwendeten View-APIs App-Grenzen zurückgeben. View-APIs geben logische Grenzen für den Anzeigebereich zurück. Manchmal wird jedoch davon ausgegangen, dass View-APIs App-Grenzen zurückgeben, was zu Problemen mit der Benutzeroberfläche führt. |
|
| Kamerakompatibilität | OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION | 263959004 | Deaktiviert die erzwungene Drehung. Standardmäßig werden alle Kamera-Apps mit fester Ausrichtung zwangsweise gedreht, wenn die Kameravorschau geöffnet ist. |
| OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION | 398195815 | Deaktiviert die Simulation der angeforderten Ausrichtung für die Kamerakompatibilität. Standardmäßig werden Kamera-Apps mit fester Ausrichtung an die angeforderte Ausrichtung angepasst, wenn die Kameravorschau geöffnet ist. | |
| OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH | 264304459 | Die standardmäßige harte Aktualisierung, die beim erzwungenen Drehen einer Kameravorschau angewendet wird, wurde entfernt. | |
| OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE | 264301586 | Wechselt von einer harten Aktualisierung zu einer weichen Aktualisierung, wenn eine Kameravorschau erzwungen gedreht wird. Dadurch wird der Status während der erzwungenen Drehung beibehalten. Standardmäßig wird die Kameraansicht unter Android vollständig aktualisiert, wenn die Ausrichtung der Kameravorschau erzwungen wird. Die harte Aktualisierung kann dazu führen, dass Apps ihren Status verlieren oder schwarz werden, je nachdem, wie die Apps ihren vorherigen Status im Cache gespeichert haben. | |
| OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT | 250678880 | Schneidet den Bildpuffer der inneren Frontkamera zu. Wenn die Überschreibung deaktiviert ist, wird der Zuschnitt der inneren Frontkamera entfernt und das Sichtfeld der Kameravorschau vergrößert. Bei einigen faltbaren Geräten (siehe Referenzgeräte) schneidet das System die Kameravorschau aller Kamera-Apps standardmäßig 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 sie den App-Inhalt zeichnet. Dies kann dazu führen, dass die App einfriert oder schwarz wird. Durch die Überschreibung kann Android ein gefälschtes Fokussierungsereignis an die App senden, das der App signalisiert, dass sie wieder Inhalte zeichnen soll. |
| OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS | 388014743 | Schließt die Einrückungen der Titelleiste aus den App-Grenzen in der Aktivitätskonfiguration im Desktop-Freiform-Fenster aus. Dadurch wird verhindert, dass obere oder untere UI-Elemente der App von der Titelleiste verdeckt oder abgeschnitten werden, wenn die App die Einrückungen der Titelleiste nicht verarbeitet. | |
OVERRIDE_MOUSE_TO_TOUCH
Aktiviert die Kompatibilitätsbehandlung, die MotionEvent-Instanzen von einer Maus oder einem Touchpad in Touch-Ereignisse umwandelt, indem die MotionEvent-Quelle in SOURCE_TOUCHSCREEN und der MotionEvent-Tooltyp in TOOL_TYPE_FINGER umgeschrieben werden, wenn die Bewegungsereignisse an die Anwendung gesendet werden.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Nicht zutreffend. Das Problem sollte in der Anwendungslogik gelöst werden.
Apps optimieren
Ihre App sollte Eingabeereignisse von Maus und Touchpad verarbeiten, einschließlich Touchpad-Gesten und Scrollen mit dem Mausrad. Weitere Informationen finden Sie unter Tastatur, Maus und Touchpad.
Überschreibung deaktivieren oder ablehnen
Deklarieren Sie FEATURE_PC in einem <uses-feature>-Element im Manifest der Anwendung.
<uses-feature android:name="android.hardware.type.pc"
android:required="false" />
Hinweis:Setze android:required="false", damit die PC-Funktion optional ist und Google Play die App nicht auf Nicht-PC-Geräten ausschließt.
Property-Flags zum Anpassen der Überschreibung
Keine.
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_MOUSE_TO_TOUCH <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MOUSE_TO_TOUCH <package>
Hinweis:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
FORCE_RESIZE_APP
Erzwingt, dass die Pakete, auf die die Überschreibung angewendet wird, in der Größe angepasst werden können und in den Mehrfenstermodus wechseln können. Gilt für alle Displaygrößen.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Legen Sie im App-Manifest das Attribut android:resizeableActivity auf true fest.
Apps optimieren
Verwenden Sie responsive/adaptive Layouts, damit sich Apps an alle Displaygrößen und Seitenverhältnisse anpassen können. Weitere Informationen findest du unter Verschiedene Displaygrößen unterstützen.
Überschreibung deaktivieren oder ablehnen
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES auf false fest.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an und machen die App-Größe anpassbar:
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
Erzwingt, dass die Pakete, auf die die Überschreibung angewendet wird, nicht in der Größe veränderbar sind und bei Konfigurationsänderungen in den Größenkompatibilitätsmodus wechseln. Gilt für alle Displaygrößen.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Setzen Sie im App-Manifest sowohl das Attribut android:resizeableActivity als auch das Metadaten-Flag android.supports_size_changes auf false und deklarieren Sie eine Einschränkung für die Ausrichtung oder das Seitenverhältnis.
Apps optimieren
Bei allen Apps, die sich bei einer Größenänderung gut verhalten, sollte entweder android:resizeableActivity oder android.supports_size_changes auf true gesetzt sein.
Andere Apps sollten so verbessert werden, dass sie sich bei einer Größenänderung gut verhalten. Weitere Informationen finden Sie unter android:resizeableActivity.
Überschreibung deaktivieren oder ablehnen
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES auf false fest.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an und machen die App nicht mehr in der Größe anpassbar:
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 dasselbe Ergebnis wie eine Überschreibung erzielen können
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. Achten Sie darauf, dass Ihre App verschiedene Displaygrößen unterstützt. Verwenden Sie Fenstergrößenklassen, um verschiedene Layouts zu unterstützen, je nachdem, wie viel Platz Ihre App auf dem Bildschirm hat. Weitere Informationen finden Sie unter Compose WindowSizeClass API und View WindowSizeClass API.
Überschreibung deaktivieren oder ablehnen
Geben Sie eine Einschränkung für das Seitenverhältnis an oder setzen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE auf false.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
android:value="false"/>
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>
Hinweis:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
Schränkt App-Einstellungen ein, die ein bestimmtes Mindestseitenverhältnis für Aktivitäten mit ausschließlicher Hochformatausrichtung erzwingen. Standardmäßig aktiviert und nur wirksam, wenn OVERRIDE_MIN_ASPECT_RATIO ebenfalls aktiviert ist.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreibung deaktivieren oder ablehnen
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Siehe 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_SMALL
Legt das minimale Seitenverhältnis der Aktivität auf einen kleinen Wert (4:3) fest.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreibung deaktivieren oder ablehnen
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Siehe 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_SMALL <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_SMALL <package>
Hinweis:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
Legt das minimale Seitenverhältnis der Aktivität auf einen mittleren Wert (3:2) fest.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreibung deaktivieren oder ablehnen
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Siehe OVERRIDE_MIN_ASPECT_RATIO.
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
Hinweis:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_MIN_ASPECT_RATIO_LARGE
Legt das minimale Seitenverhältnis der Aktivität auf einen großen Wert (16:9) fest.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreibung deaktivieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Siehe 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 Splitscreen-Seitenverhältnisses. Ermöglicht einer App, den gesamten verfügbaren Platz im Splitscreen-Modus zu nutzen, um Letterboxing zu vermeiden.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreibung deaktivieren oder ablehnen
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Siehe 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 Vollbildmodus im Hochformat, um den gesamten verfügbaren Bildschirmbereich zu nutzen.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreibung deaktivieren oder ablehnen
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Siehe 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
Aktiviert die folgenden Überschreibungen, um jede Ausrichtung zu überschreiben:
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Legen Sie das Manifestattribut activity:screenOrientation fest oder verwenden Sie die Activity#setRequestedOrientation() API.
Apps optimieren
Ihre App sollte alle Ausrichtungen unterstützen. Eine Änderung der Ausrichtung ist eine Konfigurationsänderung, die auf zwei Arten gehandhabt werden kann: Entweder lassen Sie das System die App zerstören und neu erstellen oder Sie verwalten die Konfigurationsänderungen selbst. Wenn Sie Konfigurationsänderungen selbst verwalten, kann der App-Status mithilfe von ViewModel beibehalten werden. In sehr seltenen Fällen kannst du die Ausrichtung nur auf kleinen Displays sperren. Das ist jedoch möglicherweise nicht so gut skalierbar, wie wenn der Nutzer die App nach Bedarf drehen kann. 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 eingeschränkt, aber nicht auf Geräten mit großen Displays.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE auf 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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_ANY_ORIENTATION_TO_USER
Ermöglicht der App, den verfügbaren Platz auf dem Display auszufüllen. Überschreibt alle im App-Manifest angegebenen Einschränkungen für Ausrichtung, Größenänderung und Seitenverhältnis. Außerdem werden alle Aufrufe von Activity#setRequestedOrientation() oder Activity#getRequestedOrientation() ignoriert.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Legen Sie das Manifestattribut
android:screenOrientationnicht fest oder legen Sie es auf"user"fest.Setzen Sie das Manifestattribut
android:resizeableActivityauftrue.Wenn Sie auf kleinen Bildschirmen die Größenanpassung von Apps unterstützen, aber den Mehrfenstermodus mit
android:resizeableActivity=falsedeaktivieren möchten, setzen Sie das Metadaten-Flagandroid.supports_size_changesauftrue. Legen SieminAspectRatioundmaxAspectRationicht fest.
Apps optimieren
Aktivieren Sie die Unterstützung aller Ausrichtungen für Ihre App. Legen Sie im Manifest Ihrer App keine screenOrientation-Spezifikation fest. Unterstütze die Größenänderung von Apps, den Mehrfenstermodus und alle Seitenverhältnisse, indem du das Attribut android:resizeableActivity im Manifest deiner App auf true setzt. Weitere Informationen findest du unter Verschiedene Displaygrößen unterstützen.
Überschreibung deaktivieren oder ablehnen
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
Hinweis:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
Aktiviert die Hochformatausrichtung für alle Aktivitäten im Paket. Sofern OVERRIDE_ANY_ORIENTATION nicht aktiviert ist, wird die Überschreibung nur verwendet, wenn von der Aktivität keine andere feste Ausrichtung angegeben wurde.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Überschreibung deaktivieren oder ablehnen
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
Hinweis:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
Aktiviert die Ausrichtung nosensor für alle Aktivitäten im Paket. Sofern OVERRIDE_ANY_ORIENTATION nicht aktiviert ist, wird die Überschreibung nur verwendet, wenn von der Aktivität keine andere feste Ausrichtung angegeben wurde.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Überschreibung deaktivieren oder ablehnen
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
Hinweis:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
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 von der Aktivität keine andere feste Ausrichtung angegeben wurde.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Überschreibung deaktivieren oder ablehnen
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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA
Beschränkt die Überschreibungen OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR und OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE so, dass sie nur wirksam werden, wenn die Kameraverbindung aktiv ist.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Überschreibung deaktivieren oder ablehnen
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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
Beschränkt die Displayausrichtung auf das Querformat, wenn die folgenden Bedingungen erfüllt sind:
- Aktivität im Vollbildmodus
- Die Opt-out-Komponenteneigenschaft
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDEist nicht aktiviert - Die Einstellung „Ausrichtungsanfrage des Geräteherstellers ignorieren“ ist für das Display aktiviert.
- Die natürliche Ausrichtung des Displays ist das Querformat.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Nicht zutreffend. Das Problem sollte in der Anwendungslogik gelöst werden.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE auf 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: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 überspringt, wenn die App Activity#setRequestedOrientation() aufruft, während sie neu gestartet wird oder eine aktive Kamerakompatibilitätsbehandlung hat.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION auf true.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION auf 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: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 pro Sekunde aufruft, wenn eine Aktivität nicht im Letterbox-Format für eine feste Ausrichtung angezeigt wird.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Nicht zutreffend. Das Problem sollte in der Anwendungslogik gelöst werden.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED auf 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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION
Schließt Pakete vom Verhalten „Anfrage zum Ignorieren der Ausrichtung“ aus, das von Geräteherstellern für einen Anzeigebereich oder das gesamte Display aktiviert werden kann.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Nicht zutreffend. Das Problem sollte in der Anwendungslogik gelöst werden.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.
Überschreibung deaktivieren oder ablehnen
Keine Deaktivierung möglich. Das Deaktivieren der Überschreibung kann gefährlich sein, wenn die App nicht mit einem Gerät kompatibel ist, auf dem die Einstellung „Ausrichtungsanfrage ignorieren“ des Geräteherstellers aktiviert ist. Wende dich an Android Developer Relations, um die Überschreibung zu deaktivieren.
Property-Flags zum Anpassen der Überschreibung
Keine Attribut-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 nie die Display-API-Sandboxing-Funktion für eine Aktivität im Letterbox- oder Größenkompatibilitätsmodus angewendet wird. Die Display-APIs stellen weiterhin die Grenzen des Anzeigebereichs bereit.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Deklariere Aktivitäten als größenveränderbar, indem du entweder das Manifestattribut android:resizeableActivity auf true oder das Metadaten-Flag android.supports_size_changes auf true setzt.
Apps optimieren
Apps, die als vollständig in der Größe anpassbar deklariert sind, sollten sich beim Positionieren von UI-Elementen nie auf die Displaygröße verlassen. Migrieren Sie Ihre App zu aktuellen APIs, die WindowMetrics bieten. Wenn du Jetpack Compose verwendest, kannst du die WindowSizeClass API nutzen, um die Benutzeroberfläche basierend auf der Bildschirmfläche der App auf dem aktuellen Display zu zeichnen. Weitere Informationen finden Sie unter Fenstergrößenklassen verwenden.
Überschreibung deaktivieren oder ablehnen
Keine Deaktivierung möglich. Von verworfenen APIs migrieren.
Property-Flags zum Anpassen der Überschreibung
Keine Attribut-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, dass für Pakete immer das API-Sandboxing Display angewendet wird, unabhängig vom Fenstermodus. Die Display APIs stellen immer die App-Grenzen bereit.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Deklarieren Sie Aktivitäten als nicht anpassbar, indem Sie entweder das Attribut android:resizeableActivity auf false oder das Metadaten-Flag android.supports_size_changes auf false setzen.
Apps optimieren
Apps, die als vollständig in der Größe anpassbar deklariert sind, sollten sich beim Positionieren von UI-Elementen nie auf die Displaygröße verlassen. Migrieren Sie Ihre App von veralteten APIs zu aktuellen APIs, die WindowMetrics bieten. Siehe WindowMetricsCalculator.
Überschreibung deaktivieren oder ablehnen
Keine Deaktivierung möglich. Von verworfenen APIs migrieren.
Property-Flags zum Anpassen der Überschreibung
Keine Attribut-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 auf die Aktivitätsgrenzen beschränken:
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Beheben Sie das Problem im Anwendungscode, indem Sie APIs verwenden, die die Grenzen des App-Fensters und die Offsets relativ zum App-Fenster angeben, anstatt die Grenzen des Gerätedisplays und die Offsets relativ zum Gerätedisplay.
Apps optimieren
Apps sollten View-APIs verwenden und dabei die Möglichkeit berücksichtigen, dass Letterboxing und der Mehrfenstermodus auf die App angewendet werden. Weitere Informationen finden Sie unter WindowMetricsCalculator.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS auf 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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION
Deaktiviert die erzwungene Rotation. Verbessert die Nutzerfreundlichkeit einiger Apps.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Setzen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION auf false.
Apps optimieren
Verlasse dich nicht auf die im Cache gespeicherte Ausrichtung des Kamerasensors oder auf Geräteinformationen. Informationen zur Kamerakompatibilität findest du unter Einführung in den Kamerasucher und Unterstützung für Oberflächen mit anpassbarer Größe in deiner Kamera-App.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION auf 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, um die erzwungene Rotation zu entfernen:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
So entfernen Sie die Überschreibung, damit die erzwungene Rotation erfolgen kann:
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_SIMULATE_REQUESTED_ORIENTATION
Deaktiviert die Simulation der angeforderten Ausrichtung für die Kamera. Verbessert die Nutzerfreundlichkeit einiger Apps.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Setzen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION auf false.
Apps optimieren
Verlasse dich nicht auf die im Cache gespeicherte Ausrichtung des Kamerasensors oder auf Geräteinformationen. Informationen zur Kamerakompatibilität findest du unter Einführung in den Kamerasucher und Unterstützung für Oberflächen mit anpassbarer Größe in deiner Kamera-App.
Überschreibung deaktivieren oder ablehnen
Da diese Property die Kompatibilitätsbehandlung deaktiviert, kannst du die Nutzerfreundlichkeit verbessern, indem du Änderungen der dynamischen Displaydrehung, die Sensorausrichtung des Geräts sowie die Fenster- und Vorschaugröße berücksichtigst.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION"
android:value="true|false"/>
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an, um die Simulation der angeforderten Ausrichtung zu entfernen:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION <package>
So entfernen Sie die Überschreibung, damit die angeforderte Ausrichtung simuliert werden kann:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION <package>
Hinweis:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH
Deaktiviert die Aktualisierung der Aktivität nach einer erzwungenen Drehung. Verbessert die Nutzerfreundlichkeit, wenn die Aktualisierung zu einem Statusverlust in Apps führt.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Setzen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH auf false.
Apps optimieren
Siehe OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH auf 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, wodurch die Aktivitätsaktualisierung entfernt wird:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
So entfernen Sie die Überschreibung, damit die Aktivität aktualisiert werden kann:
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
Sorgt dafür, dass die Pakete, auf die sie angewendet wird, nach der erzwungenen Drehung zur Kamerakompatibilität eine Aktivitätsaktualisierung mit einem onResume() → onPause() → onResume()-Zyklus anstelle eines onResume() → onStop() → onResume()-Zyklus durchführen.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Setzen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE auf true.
Apps optimieren
Siehe OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE auf 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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT
Erzwingt, dass die Kameraausgabe auf die entgegengesetzte Ausrichtung zugeschnitten wird, wenn die Kameraausrichtung im Hochformat nicht mit der natürlichen Geräteausrichtung übereinstimmt. Viele Apps können mit dieser Situation nicht umgehen und zeigen sonst gestreckte Bilder an.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT auf true.
Apps optimieren
Siehe OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT auf 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, die das Zuschneiden der inneren Frontkamera anwendet:
adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
So entfernen Sie die Überschreibung, wodurch das Zuschneiden der inneren Frontkamera entfernt wird:
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 App-Bildschirmfreigabe deaktivieren (siehe Medienprojektion). Wird implementiert, wenn Apps die createConfigForDefaultDisplay() API missbrauchen, um die Aufnahme des gesamten Bildschirms zu erzwingen, und den Datenschutz für Nutzer gefährden, indem sie den Inhalt von Benachrichtigungen offenlegen, die bei der Aufnahme des gesamten Bildschirms, aber nicht bei der Freigabe des App-Bildschirms erfasst werden, sowie alle Apps unabhängig vom Fenstermodus.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Das Standardverhalten für die Medienprojektion (implementiert in Android 14, API-Level 34, mit createScreenCaptureIntent()) zulassen, sodass Nutzer unabhängig vom Fenstermodus entscheiden können, ob sie den gesamten Bildschirm oder ein einzelnes App-Fenster freigeben möchten. Oder rufen Sie createScreenCaptureIntent(MediaProjectionConfig) mit einem MediaProjectionConfig-Argument auf, das von einem Aufruf von createConfigForUserChoice() zurückgegeben wurde.
Apps optimieren
Nutzer können auswählen, ob bei der Medienprojektion das gesamte Gerätedisplay oder ein App-Fenster geteilt werden soll. Dies ist ab Android 14 das Standardverhalten.
Sorge dafür, dass die Größe deiner App angepasst werden kann (resizeableActivity="true"), um den Mehrfenstermodus zu unterstützen.
Überschreibung deaktivieren oder ablehnen
Aufgrund der Bedeutung des Datenschutzes für Nutzer kann diese Überschreibung in Ihrer App nicht deaktiviert oder abgelehnt werden.
Property-Flags zum Anpassen der Überschreibung
Keine.
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an, die die Deaktivierung der Teilfreigabe des Bildschirms durch die App aufhebt (d. h. die Teilfreigabe des Bildschirms aktiviert):
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
So entfernen Sie die Überschreibung, damit die App die Teilfreigabe des Bildschirms deaktivieren kann:
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 gefälschten 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. Ein gefälschter Fokus hilft Apps also, nicht schwarz zu bleiben, wenn sie fortgesetzt werden und noch keinen Fokus haben.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_ENABLE_FAKE_FOCUS auf true.
Apps optimieren
Sie können dieses Problem vermeiden, wenn Ihre App mehrere Ausrichtungen und Konfigurationsänderungen gut verarbeitet. Sorgen Sie dafür, dass Ihre App alle Geräteformfaktoren und App-Fenstermodi unterstützt, indem Sie die Qualitätsrichtlinien für adaptive Apps befolgen.
Wenn Sie die Unity-Game-Engine verwenden, führen Sie ein Upgrade auf Version 2019.4.40 oder höher durch und exportieren Sie Ihr Spiel noch einmal. Lassen Sie die Option Resizable Window (Fenstergröße anpassbar) in den Einstellungen für den Android Player aktiviert.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_ENABLE_FAKE_FOCUS auf 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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS
Schließt die Einrückungen der Titelleiste aus den App-Grenzen in der Aktivitätskonfiguration im Desktop-Freiform-Fenster aus. Dadurch wird verhindert, dass obere oder untere UI-Elemente der App von der Titelleiste verdeckt oder abgeschnitten werden, wenn die App die Einrückungen der Titelleiste nicht verarbeitet.
Normalerweise werden die Einzüge der Titelleiste in der Konfiguration nicht von den App-Grenzen ausgeschlossen. Configuration.screenHeightDp und die App-Grenzen geben die volle Fensterhöhe an, einschließlich des Bereichs hinter der Titelleiste des Desktop-Freiform-Fensters (die Titelleiste mit den Steuerelementen zum Minimieren, Maximieren und Schließen, die auch im immersiven Modus sichtbar bleibt):
- Randlose oder immersive Apps, die keine Einrückungen für die Titelleiste verarbeiten:Der Layoutbereich der App erstreckt sich über das gesamte Fenster. Wenn die App also nicht
WindowInsetsabfragt, um ihre Benutzeroberfläche zu verschieben, können die oberen Steuerelemente direkt unter der Titelleiste gezeichnet werden. - Apps, bei denen die Einzüge der Titelleiste vom System erzwungen werden:Damit die App nicht hinter der Titelleiste angezeigt wird, verschiebt das System die Stammansicht der App unter die Titelleiste. Wenn die App ihr Layout anhand der nicht angepassten
Configuration.screenHeightDpoder App-Grenzen und nicht anhand der Abmessungen des Darstellungsbereichs dimensioniert, wird ein Layout mit voller Fensterhöhe gerendert, das unter der Titelleiste beginnt. Dadurch werden die unteren UI-Elemente über den unteren Rand des Fensters hinaus verschoben und die Berührungszielbereiche falsch ausgerichtet.
Wenn die Überschreibung aktiviert ist, subtrahiert das System die Höhe der Titelleiste von den App-Grenzen und Configuration.screenHeightDp, sodass der Layoutbereich der App mit dem Bereich unter der Titelleiste übereinstimmt.
Wie Apps dasselbe Ergebnis wie eine Überschreibung erzielen können
Randlose Anzeige aktivieren. Weitere Informationen finden Sie hier:
- Compose: Fenstereinsätze
- Ansichten: Inhalte in Ansichten randlos anzeigen
- Konfiguration: Verhaltensänderungen: Apps, die auf Android 15 oder höher ausgerichtet sind
Apps optimieren
Sie können dieses Problem vermeiden, indem Sie in Ihrer App die randlose Anzeige aktivieren.
Überschreibung deaktivieren oder ablehnen
Setzen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_EXCLUDE_CAPTION_INSETS auf false.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_EXCLUDE_CAPTION_INSETS"
android:value="true|false"/>
adb-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS <package>
Hinweis:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.
Zusätzliche Ressourcen
-
Ein virtueller Geräteinhaber ist eine vertrauenswürdige oder privilegierte App, die ein virtuelles Gerät verwaltet. Inhaber virtueller Geräte erstellen virtuelle Geräte, um Apps zu rendern und sie dann auf Remote-Geräte wie PCs, Virtual-Reality-Geräte oder Infotainmentsysteme in Autos zu projizieren. Der Inhaber des virtuellen Geräts verwendet ein lokales Gerät, z. B. ein Smartphone. ↩