Android aktiviert einen Kompatibilitätsmodus für Apps, die Einschränkungen der Ausrichtung oder Größe angeben. Der Kompatibilitätsmodus sorgt für ein akzeptables App-Verhalten auf Geräten mit großen Bildschirmen, aber mit suboptimaler Nutzerfreundlichkeit.
Mit App-Überschreibungen können Gerätehersteller das App-Verhalten ändern, um die Nutzerfreundlichkeit zu verbessern oder zu verhindern, dass Apps auf großen Bildschirmen funktionieren.
Häufige Kompatibilitätsprobleme
In den meisten Apps treten Kompatibilitätsprobleme aufgrund von Einschränkungen der App-Ausrichtung, Einschränkungen der Größe und des Seitenverhältnisses, falscher Handhabung der Ausrichtung der Kameravorschau und falsch verwendeter APIs auf.
Letterboxing
Durch Letterbox-Bild wird die App für einen bequemen Zugriff in der Mitte des Bildschirms oder, bei großen Bildschirmen, auf einer Seite oder zur anderen platziert. Mattes (einfarbige Balken oder verschwommener Hintergrund) füllen den ungenutzten Anzeigebereich an den Seiten oder oben und unten in der App aus.
Letterbox-Bild kommt häufig bei Geräten mit großen Bildschirmen vor, da sich die Abmessungen und das Seitenverhältnis des Gerätedisplays in der Regel von denen von Standardtelefonen unterscheiden, für die die meisten Apps entwickelt wurden.
Problem
Die App unterstützt nicht alle Displaykonfigurationen, da sie eine feste Ausrichtung und ein festes Seitenverhältnis hat oder nicht in der Größe geändert werden kann.
Zu den Konfigurationseinstellungen gehören die folgenden Einstellungen:
screenOrientation
: Gibt eine feste Ausrichtung für eine App an. Apps können die Ausrichtung auch zur Laufzeit festlegen, indem SieActivity#setRequestedOrientation()
verwenden.resizeableActivity
: Gibt an, ob das System die Größe von Apps an Fenster mit unterschiedlichen Abmessungen anpassen kann. Gibt unter Android 11 (API-Level 30) und niedriger an, ob Apps den Mehrfenstermodus unterstützen. Gibt unter Android 12 (API-Level 31) und höher an, ob Apps den Mehrfenstermodus auf kleinen Bildschirmen unterstützen (sw < 600 dp). Unter Android 12 und höher unterstützen Apps den Mehrfenstermodus auf großen Bildschirmen (sw >= 600 dp), unabhängig von dieser Einstellung.maxAspectRatio
: Gibt das maximale von der App unterstützte Seitenverhältnis an. Nur Apps, bei denenresizeableActivity
auf „false“ gesetzt ist, kannmaxAspectRatio
festlegen.minAspectRatio
: Gibt das minimale Seitenverhältnis an, das von der App unterstützt wird.minAspectRatio
kann nur in Apps festgelegt werden, bei denenresizeableActivity
auf „false“ gesetzt ist.
Optimierung
Die App sollte alle Bildschirmausrichtungen und -größen für Geräte- und Mehrfenstermodus unterstützen. Entfernen Sie alle Einschränkungen im Hinblick auf Ausrichtung und festes Seitenverhältnis aus Ihren App-Layouts und der App-Manifestdatei. Weitere Informationen finden Sie unter Unterstützung verschiedener Bildschirmgrößen.
Behelfslösung für kompatible Kompatibilität
Wenn eine App mit einer festen Ausrichtung oder einem festen Seitenverhältnis in einem Fenster ausgeführt wird, in dem die App die Größe oder Ausrichtung des Fensters nicht direkt unterstützt, erstellt Android Letterbox-Bild für die App, um die Kontinuität zu wahren.
Ab Android 12 (API-Level 31) und 12L (API-Level 32) wendet die Plattform eine Reihe von Verbesserungen für Apps mit Letterbox-Bild an. Gerätehersteller implementieren die Verbesserungen der Benutzeroberfläche. Sie müssen keine zusätzliche Entwicklung vornehmen, um Ihre App von den Verbesserungen zu profitieren.
Android 12 (API-Level 31) bietet die folgenden ästhetischen Verbesserungen, die von Geräteherstellern konfiguriert werden können:
- Abgerundete Ecken:Die Ecken des App-Fensters haben ein besseres Design.
- Transparenz der Systemleiste:Die Status- und Navigationsleisten, die die App überlagern, sind semitransparent. Dadurch sind die Symbole auf den Leisten immer vor dem Letterbox-Hintergrund sichtbar.
- Konfigurierbares Seitenverhältnis:Das Seitenverhältnis der App kann angepasst werden, um das Erscheinungsbild der App zu verbessern.
12L (API-Level 32) umfasst die folgenden funktionalen Verbesserungen:
- Konfigurierbare Positionierung:Auf großen Bildschirmen können Gerätehersteller die App links oder rechts auf dem Bildschirm positionieren, um die Interaktion zu erleichtern.
- Neu gestaltete Schaltfläche zum Neustart:Gerätehersteller können der Schaltfläche zum Neustarten für den Größenkompatibilitätsmodus ein neues Design verleihen, damit Nutzer sie besser erkennen.
Unter Android 13 (API-Level 33) wird ein Dialogfeld mit Informationen zur Positionierung der App im Letterbox-Format oder zur Einbindung des Letterbox-Bildschirms im Splitscreen-Modus hinzugefügt:
Kompatibilitätsmodus für Größen
Der Größenkompatibilitätsmodus ist das Letterbox-Format mit einem Steuerelement für den Neustart. 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 geändert werden kann. Wenn eine Aktivität in einen Displaycontainer mit nicht kompatiblen Abmessungen verschoben wird, skaliert das System die App möglicherweise neu, um die Geräteanzeige mit mindestens einer Dimension zu füllen.
Zu den Änderungen der Gerätekonfiguration, die den Größenkompatibilitätsmodus auslösen können, gehören:
- Bildschirm drehen
- Faltbares Gerät auf- oder zuklappen
- Zwischen Vollbild- und Splitscreen-Anzeigemodi wechseln
Problem
Der Größenkompatibilitätsmodus gilt in der Regel für Aktivitäten, deren Ausrichtung oder Seitenverhältnis eingeschränkt ist und deren Größe (oder Systemeinstellung) so konfiguriert ist, dass sie nicht geändert werden kann.
Wenn Ihre App eines der folgenden Kriterien erfüllt, wird davon ausgegangen, dass die Größe der App angepasst werden kann und sie nicht auf den Größenkompatibilitätsmodus gesetzt wird:
Die Größe kann mit
resizeableActivity="true"
geändert werdenUnterstützt den Bild im Bild (BiB)-Modus
Ist eingebettet
Der Gerätehersteller hat die
FORCE_RESIZE_APP
-Überschreibung für jede App, die vom Gerätehersteller angewandt wurde (von der App festgelegte Eigenschaften werden ignoriert)
Wenn Ihre App keine dieser Bedingungen erfüllt, kann ihre Größe nicht angepasst werden. Die App könnte dann in den Größenkompatibilitätsmodus versetzt werden.
Optimierung
Die App sollte alle Displaygrößen unterstützen. Du kannst die Größe deiner App anpassen, indem du das Attribut android:resizeableActivity
des Elements <activity>
oder <application>
im App-Manifest auf „true“ setzt. Entwerfen Sie responsive/adaptive Layouts für Ihre App. Weitere Informationen finden Sie unter Unterstützung verschiedener Bildschirmgrößen und Unterstützung des Mehrfenstermodus.
Behelfslösung für kompatible Kompatibilität
Android setzt eine App in den Größenkompatibilitätsmodus, wenn das System feststellt, dass die Darstellung der Letterbox-App verbessert werden kann, indem die App so skaliert wird, dass das Anzeigefenster in mindestens einer Dimension gefüllt wird. Das System zeigt ein Steuerelement für den Neustart an, das den Anwendungsprozess, die Aktivität und die Anzeige neu erstellt. Weitere Informationen finden Sie unter Prozesse und Threads – Übersicht.
Flackernde Schleifen
Wenn eine App nicht alle Bildschirmausrichtungen unterstützt, kann sie bei einer Konfigurationsänderung wiederholt neue Ausrichtungen anfordern. Dadurch entsteht eine Endlosschleife, die das Display flackert oder die App endlos dreht.
Problem
Unter Android 12 (API-Level 31) und höher können Gerätehersteller ihre Geräte so konfigurieren, dass die von Apps festgelegten Ausrichtungsbeschränkungen ignoriert und stattdessen die Einschränkungen für Kompatibilitätsmodi verwendet werden. So könnte beispielsweise ein faltbares Gerät die Einstellung android:screenOrientation="portrait"
einer Aktivität ignorieren, wenn die Aktivität auf dem inneren Display des Geräts im Querformat angezeigt wird.
Wenn die Ausrichtungsbeschränkungen einer App ignoriert werden, kann die App ihre Ausrichtung programmatisch durch Aufrufen von Activity#setRequestedOrientation()
festlegen. Der Aufruf löst einen App-Neustart aus, wenn die App keine Konfigurationsänderungen verarbeitet. Weitere Informationen finden Sie unter Konfigurationsänderungen verarbeiten. Nach dem Neustart werden die Einschränkungen der App-Ausrichtung wieder ignoriert, die App wiederholt den Aufruf von setRequestedOrientation()
, der Aufruf löst einen App-Neustart aus usw. in einer sich wiederholenden Schleife.
Dies kann auch auftreten, wenn die natürliche Ausrichtung, also die von Android festgelegte gewöhnliche Ausrichtung, eines Gerätebildschirms im Querformat ist. Das heißt, beim Aufrufen von Display#getRotation()
wird Surface.ROTATION_0
zurückgegeben, während das Gerät ein Seitenverhältnis im Querformat 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 aber nicht immer der Fall, z. B. beim inneren Display von Pixel Fold und bei einigen Tablets.
Eine App im Querformat auf einem inneren Display von Pixel Fold prüft möglicherweise die Bildschirmdrehung, erhält den Wert ROTATION_0
, nimmt an, dass die natürliche Ausrichtung das Hochformat ist, und ruft setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
)
auf. Nach dem Neustart der App (im Querformat) wird unter Umständen in einer Endlosschleife noch einmal die Bildschirmdrehung überprüft, der Wert ROTATION_0
empfangen, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
aufgerufen usw.
Optimierung
Folgendes sollten Apps nicht tun:
- Legen Sie mit
Activity#setRequestedOrientation()
in der AktivitätsmethodeonCreate()
eine Standardausrichtung fest, da die Ausrichtungsanfrage durch unbehandelte Konfigurationsänderungen unerwartet ausgelöst werden kann - Das Gerät (
ROTATION_0
) sollte im Hochformat gehalten werden - Legen Sie die Ausrichtung basierend auf Signalen fest, die nicht mit der aktuellen Fenstergröße zusammenhängen, z. B.
Display#getRotation()
, das Vorhandensein einerFoldingFeature
oder eingestellte APIs (siehe unten).
Behelfslösung für kompatible Kompatibilität
Android ignoriert Aufrufe an Activity#setRequestedOrientation()
in den folgenden Situationen:
Die Aktivität wurde nach einem vorherigen Aufruf der Methode bereits neu gestartet oder die Behandlung der Drehung der Kamerakompatibilität wurde aktiviert (siehe Kameravorschau unten).
Gerätehersteller können dieses Verhalten auf eine App mit
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
anwenden.Bei der Aktivität wurden mehr als zwei Ausrichtungsanfragen pro Sekunde gesendet, was darauf hinweist, dass es eine Schleife gegeben hat. Von den beiden Anfragen in der Schleife verwendet Android diejenige, mit der der Darstellungsbereich der App maximiert wird.
Gerätehersteller können dieses Verhalten auf eine App mit
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
anwenden.
Kameravorschau
Die Kameravorschau oder der Sucher von Kamera-Apps kann auf Tablets, Laptops und faltbaren Displays falsch ausgerichtet oder verzerrt sein.
Problem
Die Android-Kompatibilitätsdefinition besagt, 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 angemessene Annahme bei herkömmlichen Smartphones. Tablets und Laptops sowie deren Kamerasensoren können im Querformat ausgerichtet sein. Außerdem können neue Formfaktoren wie faltbare Smartphones mehrere natürliche Ausrichtungen und mehrere Kamerasensoren in verschiedenen Ausrichtungen haben.
Wenn Sie eine Aktivität mit einer Kamera starten, die in der App nicht erwartet wird, oder zwischen verschiedenen Kameras oder Gerätebildschirmen (bei faltbaren Geräten) wechseln, kann dies zu einer falsch ausgerichteten oder verzerrten Kameravorschau führen.
Optimierung
Kamera-Apps müssen die Geräteausrichtung und die Ausrichtung des Kamerasensors korrekt identifizieren und verwalten, damit eine korrekt ausgerichtete und skalierte Kameravorschau dargestellt wird. Apps müssen die Geräte- und Sensordrehung sowie 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 Jetzt neu: Kamerasucher.
Behelfslösung für kompatible Kompatibilität
Ein Gerät befindet sich in natürlicher Ausrichtung, wenn Display#getRotation()
Surface.ROTATION_0
zurückgibt. Das System berechnet CameraCharacteristics.SENSOR_ORIENTATION
anhand der natürlichen Ausrichtung des Geräts. Android passt das Fenster im Hochformat von Apps mit eingeschränktem Hochformat an die natürliche Ausrichtung des Geräts an. Das wird von den meisten Apps erwartet. Android schneidet das Bild des Kamerasensors außerdem zu, wenn die Sensorausrichtung im Querformat und die Kameravorschau im Hochformat ist. Sie können folgende Problemumgehungen nutzen:
Drehen der Kameravorschau für Apps mit eingeschränktem Hochformat erzwingen:Apps, die auf das Hochformat beschränkt sind, erwarten die natürliche Ausrichtung des Geräts und die Ausrichtung des Kamerasensors im Hochformat. Unter Android 12 (API-Level 31) und höher können Apps jedoch in mehreren Geräteausrichtungen ausgeführt werden, wenn die Gerätehersteller die Spezifikation der Ausrichtung ignorieren.
Wenn eine App mit der Kamera verbunden ist, die auf das Hochformat beschränkt ist, wird die App von Android so gedreht, dass sie im Hochformat an der natürlichen Ausrichtung des Geräts ausgerichtet ist.
Auf Pixel Tablet wird das Fenster im Hochformat der App zum Vollbild-Hochformat gedreht, um es an die natürliche Ausrichtung des Geräts anzupassen. Nachdem die Drehung erzwungen wurde, wird die App im Vollbildmodus angezeigt.
Auf dem inneren Display von Pixel Fold werden Aktivitäten im Hochformat ins Querformat gedreht, um sie an die natürliche Ausrichtung anzupassen. Die App wird nach dem Erzwingen der Drehung im Letterbox-Format dargestellt.
Zuschnitt der inneren Frontkamera:Der Sensor für die innere Frontkamera von Pixel Fold ist im Querformat ausgerichtet. Android erzwingt nicht nur ein Drehen der Kameravorschau auf dem inneren Display von Pixel Fold, sondern schneidet auch das Sichtfeld der inneren Frontkamera (Querformat) zu, damit der Sensor eine Sicht entgegen der Geräteausrichtung erfasst.
Aktualisierung der Kameravorschau erzwingen:Nach der erzwungenen Drehung wechselt das System zwischen den Aktivitätsmethoden
onStop()
undonStart()
(standardmäßig) oderonPause()
undonResume()
(angewandt durch OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE pro App-Überschreibung), damit die Drehung erzwungen wird, damit die Kameravorschau korrekt angezeigt wird.Seitenverhältnisskalierung:Das System ändert das Seitenverhältnis der erzwungenen Kameravorschau dynamisch in ein höheres minimales Seitenverhältnis, damit die Kameravorschau korrekt skaliert wird.
App-Entwickler können diese Behelfslösungen überschreiben, wenn die Apps die Kameravorschau korrekt verarbeiten. Weitere Informationen finden Sie unten im Abschnitt Überschreibungen pro App.
Häufig missbräuchlich verwendete APIs
Da Android jetzt Funktionen wie den Mehrfenstermodus 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 verwendet werden können. Die eingestellten APIs stehen jedoch aus Gründen der Abwärtskompatibilität weiterhin zur Verfügung.
Einige View
APIs sind für spezielle Zwecke konzipiert, die von Entwicklern nicht immer verstanden werden.
Problem
Entwickler verwenden weiterhin verworfene Display
-APIs und gehen fälschlicherweise davon aus, dass die APIs die App-Grenzen anstelle der Begrenzung des Geräte-Anzeigebereichs zurückgeben. Oder Entwickler verwenden irrtümlicherweise spezielle View APIs, um allgemeine Anzeigemesswerte abzurufen. Das führt zu Fehlberechnungen beim Neupositionieren von UI-Elementen nach Größenänderungsereignissen von App-Fenstern, die Layoutprobleme verursachen.
Eingestellte und häufig missbrauchte Display APIs:
Weitere Informationen finden Sie unter Unterstützung des Mehrfenstermodus.
Missbrauch von View APIs:
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:
Behelfslösung für kompatible Kompatibilität
Mit zwei Überschreibungen werden die eingestellten Display
APIs und die missbrauchten View
APIs so angepasst, dass die Anwendungsgrenzen zurückgegeben werden: ALWAYS_SANDBOX_DISPLAY_APIS
für Display
APIs und OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
für View
APIs. ALWAYS_SANDBOX_DISPLAY_APIS
wird außerdem standardmäßig auf Apps angewendet, die die Voraussetzungen für den Größenkompatibilitätsmodus erfüllen.
Transparente Aktivitäten
Transparente Aktivitäten sind das Ergebnis von transparenten Hintergrundstilen, zum Beispiel:
<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, wie Theme.Material.Dialog
, können Stile enthalten, die Aktivitäten transparent machen.
Transparente Aktivitäten decken nicht den gesamten verfügbaren Anzeigebereich ein. Das erschwert die Bedienung auf großen Bildschirmen, da sich der verfügbare Anzeigebereich je nach Konfigurationsänderungen wie Gerätedrehung, Gerätefalten und -aufklappen sowie Mehrfenstermodus ändern kann.
Problem
Auf großen Bildschirmen sollte eine transparente Aktivität den Grenzen der ersten intransparenten Aktivität unterhalb der transparenten Aktivität im Aufgaben-Aktivitätsstapel entsprechen. Eine intransparente Aktivität, bei der ein Berechtigungsdialogfeld gestartet wird, kann jedoch ein Trampolin sein (eine Aktivität, die andere Aktivitäten startet), die nach dem Starten des Dialogfelds wieder ausgeblendet wird. Daher kann das System die Grenzen der intransparenten Aktivität unter der transparenten Aktivität nicht ermitteln.
Optimierung
Durchsichtige Aktivitäten übernehmen ihre Einschränkungen von der obersten intransparenten Aktivität im Aktivitätsstapel einer Aufgabe. Die intransparente Aktivität muss für den gesamten Lebenszyklus der durchscheinenden Aktivität verfügbar sein, von der Erstellung bis zur Vernichtung. Aus diesem Grund sollten Sie bei Trampolinaktivitäten keine Berechtigungsanfragen senden.
Wenn durch eine Trampolinaktivität eine Berechtigungsanfrage ausgelöst wird, kann der Nutzer den Berechtigungsdialog möglicherweise nicht sehen, weil die Trampolinaktivität gelöscht wird, bevor der Nutzer auf den Dialog reagieren konnte.
Apps sollten immer Berechtigungsanfragen von Aktivitäten starten, die sichtbar bleiben, bis der Nutzer eine Berechtigungsentscheidung getroffen hat.
Abgerundete Ecken
Eine Aktivität kann durchscheinend sein, indem sie ein durchscheinendes Design verwendet oder den verfügbaren Platz nicht ausfüllt. Wenn eine durchscheinende Aktivität die verfügbare Fläche ausfüllt, wendet das System automatisch abgerundete Ecken auf die Aktivität an, sofern dies vom Gerätehersteller entsprechend konfiguriert wurde. Wenn jedoch eine durchsichtige Aktivität (z. B. ein Berechtigungsdialog) nicht den verfügbaren Platz ausfüllt, müssen Sie entscheiden, ob Sie abgerundete Ecken verwenden möchten.
Berechtigungsdialogfelder füllen nicht den verfügbaren Anzeigebereich aus, da für das Layout des Dialogfelds normalerweise LayoutParams.WRAP_CONTENT anstelle von LayoutParams.MATCH_PARENT verwendet wird.
Behelfslösung für kompatible Kompatibilität
Lassen Sie Aktivitäten, die Dialogaktivitäten starten, sichtbar, bis der Nutzer auf das Dialogfeld geantwortet hat.
Das System stellt sicher, dass eine transparente Aktivität alle Einschränkungen der ersten intransparenten Aktivität unter der transparenten Aktivität im Aktivitätsstapel erbt, einschließlich Einschränkungen in Bezug auf:
- Kompatibilitätsmodus für Größen
- Ausrichtung
- Seitenverhältnis
Unity-Spiele
Unity-Spiele werden im Android-Vollbild- oder im Mehrfenstermodus ausgeführt. Viele Unity-Spiele verlieren jedoch den Fokus und beenden das Zeichnen von Inhalten, wenn sich die App im Mehrfenstermodus befindet.
Problem
Unity hat seit Unity 2019.4 eine Resizable Window
-Option hinzugefügt, um den Mehrfenstermodus unter Android zu unterstützen. Die ursprüngliche Implementierung hat jedoch nicht richtig auf den Aktivitätslebenszyklus im Mehrfenstermodus reagiert, wodurch UnityPlayer die Wiedergabe unterbrochen hat, wenn die App den Fokus verliert. Der Spieler hat einen schwarzen Bildschirm oder den letzten, eingefrorenen Frame des Spiels gerendert. Das Spiel wurde erst fortgesetzt, wenn der Nutzer auf den Bildschirm getippt hat. Bei vielen Apps, in denen die Unity-Engine verwendet wird, tritt dieses Problem auf und werden im Mehrfenstermodus als schwarzes Fenster gerendert.
Optimierung
Führe ein Upgrade von Unity auf 2019.4.40 oder höher durch und exportiere dein Spiel noch einmal. Lasse die Option Resizable Window
in den Android Player-Einstellungen aktiviert. Andernfalls wird das Spiel pausiert, wenn es nicht im Fokus ist, obwohl es im Mehrfenstermodus vollständig sichtbar ist.
Behelfslösung für kompatible Kompatibilität
Gerätehersteller können die OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
-Überschreibung für jede App anwenden, um ein falsches Fokusereignis auf eine App im Mehrfenstermodus zu übertragen. Durch die Überschreibung kann die Aktivität den Inhalt neu zeichnen und nicht geschwärzt werden.
App auf Kompatibilitätsprobleme testen
Um Ihre App zu testen und zu verstehen, wie sie sich bei verschiedenen Formfaktoren verhält, nutzen Sie die folgenden Ressourcen:
- Gerätestreaming:Informationen zum Testen Ihrer App auf Produktionsgeräten wie Pixel Tablet und Pixel Fold, die in Google-Rechenzentren gehostet werden, finden Sie unter Android-Gerätestreaming aus Android Studio.
- Emulatoren für Pixel Tablet und Pixel Fold in Android Studio Hedgehog:Informationen zum Erstellen von Emulatoren für Pixel Tablet und Pixel Fold finden Sie unter Virtuelle Geräte erstellen und verwalten.
- Emulator mit anpassbarer Größe für Android Studio:Informationen zum Zugriff auf virtuelle Geräte finden Sie unter Apps im Android-Emulator ausführen.
Mit 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 Activity.isLetterboxed() : Boolean { if (isInMultiWindowMode) return false val wmc = WindowMetricsCalculator.getOrCreate() val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds val isScreenPortrait = maxBounds.height() > maxBounds.width() return if (isScreenPortrait) { currentBounds.height() < maxBounds.height() } else { currentBounds.width() < maxBounds.width() } }
Java
public boolean isLetterboxed(Activity activity) { if (activity.isInMultiWindowMode()) { return false; } WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate(); Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds() Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds(); boolean isScreenPortrait = maxBounds.height() > maxBounds.width(); return (isScreenPortrait) ? currentBounds.height() < maxBounds.height() : currentBounds.width() < maxBounds.width(); }
Führen Sie dann einen Test aus, um das Verhalten zu bestätigen, und stellen Sie sicher, dass die Zielaktivität nicht im Letterbox-Format dargestellt wird:
Kotlin
@get:Rule val activityRule = ActivityScenarioRule(MainActivity::class.java) @Test fun activity_launched_notLetterBoxed() { activityRule.scenario.onActivity { assertThat(it.isLetterboxed()).isFalse() } }
Java
@Rule public ActivityScenarioRulerule = new ActivityScenarioRule<>(MainActivity.class); public void activity_launched_notLetterBoxed() { try (ActivityScenario scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity(activity -> { assertThat(isLetterboxed(activity)).isFalse(); }); } }
Idealerweise sollten Sie diese Art von Test nur so lange durchführen, bis sie bestanden wurde und die Aktivitäten Ihrer App den gesamten für die App verfügbaren Anzeigebereich einnehmen. Testen Sie Ihre App auf allen Gerätetypen, um ein einheitliches Verhalten sicherzustellen.
Überschreibungen pro App
Android bietet Überschreibungen, die das konfigurierte Verhalten von Apps ändern. Mit der Überschreibung FORCE_RESIZE_APP
wird das System beispielsweise angewiesen, den Größenkompatibilitätsmodus zu umgehen und die Größe der App an die Displayabmessungen anzupassen, selbst wenn resizeableActivity="false"
im App-Manifest festgelegt ist.
Gerätehersteller überschreiben bestimmte Apps auf bestimmten Geräten mit großen Bildschirmen. Unter Android 14 (API-Level 34) und höher können Nutzer in den Geräteeinstellungen Überschreibungen auf Apps anwenden.
Überschreibungen pro App
Unter Android 14 und höher können Nutzer über ein Einstellungsmenü das Seitenverhältnis von Apps ändern. Auf Geräten mit großen Bildschirmen wie Pixel Tablet und Pixel Fold wird das Menü implementiert.
Das Menü enthält eine Liste aller auf dem Gerät installierten Apps. Nutzer wählen eine App aus und legen dann das Seitenverhältnis der App auf 3:4, 1:1, Vollbild oder einen anderen vom Gerätehersteller konfigurierten Wert fest. Nutzer können das Seitenverhältnis auch auf den im App-Manifest angegebenen Standardwert der App zurücksetzen.
Für Apps kann die Kompatibilitätsüberschreibung deaktiviert werden, indem die folgenden PackageManager.Property
-Tags festgelegt werden:
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
Wenn Sie die Überschreibung der Nutzerseitenverhältnis-Kompatibilität deaktivieren möchten, fügen Sie die Property zu Ihrem App-Manifest hinzu und legen Sie den Wert auf
false
fest:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE" android:value="false" /> </application>
Ihre App wird von der Liste der Apps in den Geräteeinstellungen ausgeschlossen. Nutzer können das Seitenverhältnis der App nicht überschreiben.
Das Festlegen der Eigenschaft auf
true
hat keine Auswirkungen.
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
Um die Vollbildoption der Überschreibung des Seitenverhältnisses für Nutzer zu deaktivieren, fügen Sie die Eigenschaft Ihrem App-Manifest hinzu und legen Sie den Wert auf
false
fest:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE" android:value="false" /> </application>
Die Vollbildoption wird in den Geräteeinstellungen aus der Liste der Seitenverhältnisoptionen entfernt. Nutzer können die Vollbildüberschreibung nicht auf Ihre App anwenden.
Das Festlegen dieser Eigenschaft auf
true
hat keine Auswirkungen.
App für große Bildschirme optimieren:Legen Sie in Ihrer App keine Seitenverhältnisbeschränkungen fest. Verwenden Sie Fenstergrößenklassen, um verschiedene Layouts basierend auf der Menge des verfügbaren Anzeigebereichs zu unterstützen.
Überschreibungen pro App durch den Gerätehersteller
Die Gerätehersteller überschreiben die einzelnen Geräte der einzelnen Apps. Auf Pixel Tablet und Pixel Fold werden einige der Überschreibungen standardmäßig auf verschiedene Apps angewendet.
Für Apps können die meisten Überschreibungen deaktiviert werden. Weitere Informationen dazu finden Sie in der Tabelle Überschreibungen pro App unten.
Sie können Ihre App mit dem Kompatibilitäts-Framework mit aktivierten oder deaktivierten Überschreibungen testen (siehe Kompatibilitäts-Framework-Tools). Wenn diese Option aktiviert ist, gelten Überschreibungen für die gesamte App.
Sie können auch die Android Debug Bridge (ADB) verwenden, um Überschreibungen zu aktivieren oder zu deaktivieren und um zu bestimmen, welche Überschreibungen auf Ihre App angewendet werden.
So aktivieren oder deaktivieren Sie Überschreibungen:
adb shell am compat enable/disable <override name/id> <package>
Prüfen Sie bei Pixel Tablet und Pixel Fold, welche Überschreibungen für Ihre App gelten:
adb shell dumpsys platform_compat | grep <package name>
In der folgenden Tabelle sind die verfügbaren Überschreibungen sowie eine Anleitung zur Optimierung Ihrer App aufgeführt, damit die App nicht auf Überschreibungen angewiesen ist. Sie können Ihrem App-Manifest Property-Flags hinzufügen, um einige Überschreibungen zu deaktivieren.
Überschreibungen pro App | |||
---|---|---|---|
Typ | Name | ID | Beschreibung |
Größenanpassung | FORCE_RESIZE_APP | 174042936 | Umgeht den Größenkompatibilitätsmodus für die Anwendung bei Konfigurationsänderungen. |
FORCE_NON_RESIZE_APP | 181136395 | Zwingt die App bei Konfigurationsänderungen in den Größenkompatibilitätsmodus. | |
Seitenverhältnis | OVERRIDE_MIN_ASPECT_RATIO | 174042980 | Gatekeeper-Überschreibung, die aktiviert werden muss, um andere Seitenverhältnisüberschreibungen anzuwenden |
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | Wenn diese Option aktiviert ist (Standardeinstellung), wird der Umfang auf Aktivitäten im Hochformat beschränkt. | |
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 so, dass es 50% der Displaygröße (oder des geteilten Seitenverhältnisses) passt | |
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN | 218959984 | Deaktiviert das Überschreiben des minimalen Seitenverhältnisses, damit Apps im Hochformat angezeigt werden. | |
Ausrichtung | OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT | 265452344 | Überschreibt die Ausrichtung auf Hochformat, wenn eine Aktivität eine nicht definierte Ausrichtung hat. |
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR | 265451093 | Überschreibt die Ausrichtung auf nosensor (wobei die natürliche Ausrichtung des Geräts verwendet wird), wenn eine Aktivität eine undefinierte Ausrichtung hat. |
|
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE | 266124927 | Dreht Apps, die nur im Querformat verfügbar sind, um 180 Grad. | |
OVERRIDE_ANY_ORIENTATION | 265464455 | Ermöglicht das Überschreiben einer beliebigen Ausrichtung. | |
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA | 265456536 | Beschränkt den Bereich zum Überschreiben der Ausrichtung auf den Zeitpunkt, zu dem die App mit der Kamera verbunden ist. | |
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION | 255940284 | Stellt die Anzeige auf eine feste natürliche Ausrichtung im Querformat ein, wenn eine Aufgabe im Vollbildmodus angezeigt wird (auch bei Letterbox-Bild). | |
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION | 254631730 | Ausrichtungsanfragen von der App werden ignoriert, um Rotationsschleifen zu vermeiden. | |
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | Ignoriert wiederholte Ausrichtungsanfragen beim Neustart einer Aktivität. Wenn Android erkennt, dass eine App mindestens zwei neue Ausrichtungen innerhalb einer Sekunde anfordert, betrachtet das System dies als Rotationsschleife und wendet die Überschreibung an. | |
OVERRIDE_RESPECT_REQUESTED_ORIENTATION | 236283604 | Verhindert Letterbox-Bild, indem die Einstellung zum Ignorieren der Ausrichtungsanfrage des Geräteherstellers deaktiviert wird. | |
Sandbox-APIs | NEVER_SANDBOX_DISPLAY_APIS | 184838306 | Verhindert, dass sich das Verhalten von Display-APIs ändert. |
ALWAYS_SANDBOX_DISPLAY_APIS | 185004937 | Erzwingt, dass die Display APIs in der App App-Grenzen zurückgeben. Display-APIs geben Anzeigebereichsgrenzen zurück. Manchmal geht die Anwendung jedoch davon aus, dass Display-APIs App-Grenzen zurückgeben, was zu Problemen 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 Anzeigebereichsgrenzen zurück. Manchmal geht die Anwendung jedoch davon aus, dass View APIs Anwendungsgrenzen zurückgeben, was zu Problemen mit der Benutzeroberfläche führt. |
|
Kamerakompatibel | OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION | 263959004 | Deaktiviert die erzwungene Drehung. Standardmäßig wird die Rotation aller Kamera-Apps mit fester Ausrichtung erzwungen, wenn die Kameravorschau geöffnet ist. |
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH | 264304459 | Entfernt die standardmäßige vollständige Aktualisierung, wenn eine Kameravorschau erzwungen wird, um eine Drehung zu erzwingen. | |
ÜBERSCHRIFT_KAMERA_COMPAT_AKTIVIEREN_REFRESH_VIA_PAUSE | 264301586 | Schaltet die vollständige Aktualisierung auf eine sanfte Aktualisierung um, wenn eine Kameravorschau erzwungen wird, um den Zustand während der erzwungenen Rotation beizubehalten. Standardmäßig führt Android eine vollständige Aktualisierung durch, wenn eine Drehung der Kameravorschau erzwungen wird. Die vollständige Aktualisierung kann zu Problemen führen, wenn der Status bestimmter Apps verloren geht oder geschwärzt wird. Dies hängt davon ab, wie der vorherige Status im Cache gespeichert wurde. | |
LANDSCHAFT_IN_DES_PORTRAITS_ÜBERSCHREIBEN | 250678880 | Schneidet den Bildzwischenspeicher der inneren Frontkamera zu. Ist die Überschreibung deaktiviert, wird der Zuschnitt der inneren Frontkamera entfernt und das Sichtfeld der Kameravorschau vergrößert. Auf Pixel Fold wird die Kameravorschau aller Kamera-Apps standardmäßig zugeschnitten, wenn die innere Frontkamera verwendet wird. | |
Sonstiges | OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS | 263259275 | Verhindert, dass die App geschwärzt wird, wenn sie im geteilten Bildschirmmodus nicht mehr im Fokus ist. Die App wartet auf den Fokus, bevor der App-Inhalt gezeichnet wird. Dies kann dazu führen, dass die App einfriert oder geschwärzt wird. Durch die Überschreibung kann Android ein falsches Fokusereignis an die App senden, das der App signalisiert, dass sie wieder mit dem Zeichnen von Inhalten beginnen soll. |
FORCE_RESIZE_APP
Erzwingt, dass die Größe der Pakete, auf die die Überschreibung angewendet wird, geändert werden kann. Diese Änderung wirkt sich nicht darauf aus, ob die App in den Mehrfenstermodus versetzt werden kann, aber ermöglicht der App, beim Ändern der Bildschirmgröße die Größe anzupassen, ohne in den Größenkompatibilitätsmodus zu wechseln.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Setzen Sie im App-Manifest entweder das android:resizeableActivity
-Attribut auf „true“ oder das android.supports_size_changes
-Metadaten-Flag auf „true“, um eine Größenanpassung zu unterstützen, während der Mehrfenstermodus deaktiviert wird, wobei android:resizeableActivity
auf „false“ gesetzt ist.
Apps optimieren
Verwenden Sie responsive/adaptive Layouts, damit sich Apps an alle Displaygrößen und Seitenverhältnissen anpassen können. Weitere Informationen finden Sie unter Unterstützung verschiedener Bildschirmgrößen.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
auf „false“ fest.
Eigenschafts-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 sorgen dafür, dass die App-Größe angepasst werden kann:
adb shell am compat enable FORCE_RESIZE_APP <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable FORCE_RESIZE_APP <package>
Hinweis:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
FORCE_NON_RESIZE_APP
Erzwingt, dass die Größe der Pakete, auf die die Überschreibung angewendet wird, nicht geändert werden kann und bei Konfigurationsänderungen in den Größenkompatibilitätsmodus wechselt.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Setzen Sie sowohl das android:resizeableActivity
-Attribut als auch das android.supports_size_changes
-Metadaten-Flag im App-Manifest auf „false“ und deklarieren Sie entweder eine Einschränkung der Ausrichtung oder des Seitenverhältnisses.
Apps optimieren
Für alle Apps, die nach Größenanpassung einwandfrei funktionieren, sollte android:resizeableActivity
oder android.supports_size_changes
auf „true“ gesetzt sein. Andere Apps sollten so optimiert werden, dass sie bei Größenanpassung einwandfrei funktionieren. Weitere Informationen finden Sie unter android:resizeableActivity.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
auf „false“ fest.
Eigenschafts-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 sorgen dafür, 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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_MIN_ASPECT_RATIO
Der Gatekeeper für alle Behandlungen, die ein bestimmtes minimales Seitenverhältnis erzwingen.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie android:minAspectRatio
auf Aktivitäts- oder App-Ebene fest.
Apps optimieren
Sie sollten in Ihrer App keine Beschränkungen des Seitenverhältnisses festlegen. Achten Sie darauf, dass Ihre App unterschiedliche Bildschirmgrößen unterstützt. Verwenden Sie Fenstergrößenklassen, um unterschiedliche 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.
Überschreiben deaktivieren oder deaktivieren
Legen Sie eine Einschränkung des Seitenverhältnisses fest oder setzen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE
auf "false".
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
NUR_ÜBER_MIN_ASPECT_RATIO_PORTRAIT
schränkt Anwendungen ein, die für Aktivitäten, die nur im Hochformat ausgerichtet sind, ein bestimmtes minimales Seitenverhältnis erzwingen. Standardmäßig aktiviert und wird nur wirksam, wenn auch OVERRIDE_MIN_ASPECT_RATIO
aktiviert ist.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_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
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
ÜBER_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
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
ÜBER_MIN_ASPECT_RATIO_ZU_ALIGN_MIT_SPLIT_SCREEN
Aktiviert die Verwendung des Seitenverhältnisses für den geteilten Bildschirm. Ermöglicht einer App, den gesamten verfügbaren Platz im geteilten Bildschirmmodus zu verwenden, um Letterbox-Bild zu vermeiden
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN
Deaktiviert die minimale Überschreibung des Seitenverhältnisses im Hochformat, sodass der gesamte verfügbare Platz auf dem Bildschirm genutzt wird.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Siehe OVERRIDE_MIN_ASPECT_RATIO.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
Aktiviert das Hochformat für alle Aktivitäten im Paket. Sofern OVERRIDE_ANY_ORIENTATION nicht aktiviert ist, wird die Überschreibung nur verwendet, wenn durch die Aktivität keine andere feste Ausrichtung angegeben wurde.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Manifestattribut activity:screenOrientation
fest oder verwenden Sie die Activity#setRequestedOrientation
API.
Apps optimieren
Ihre App sollte alle Ausrichtungen unterstützen. Bei einer Ausrichtungsänderung handelt es sich um eine Konfigurationsänderung, die auf zwei Arten erfolgen kann: Sie können die App löschen und neu erstellen lassen oder die Konfigurationsänderungen selbst verwalten. Wenn Sie Konfigurationsänderungen selbst verwalten, kann der App-Status mithilfe einer ViewModel
beibehalten werden. In sehr wenigen Fällen können Sie die Ausrichtung nur auf kleinen Bildschirmen sperren, obwohl dies möglicherweise nicht so gut skaliert und dass der Nutzer die App nach Bedarf drehen kann. Ab Android 12L kann die feste Ausrichtung durch die Gerätekonfiguration überschrieben werden. Weitere Informationen zum Verarbeiten von Konfigurationsänderungen und zur Unterstützung aller Ausrichtungen finden Sie unter Konfigurationsänderungen verarbeiten, ViewModel-Übersicht und App-Ausrichtung auf Smartphones, aber nicht auf Geräten mit großen Bildschirmen eingeschränkt.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
auf „false“ fest.
Eigenschafts-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_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
Hinweis:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
Aktiviert die nosensor-Ausrichtung für alle Aktivitäten im Paket. Sofern OVERRIDE_ANY_ORIENTATION nicht aktiviert ist, wird die Überschreibung nur verwendet, wenn durch die Aktivität keine andere feste Ausrichtung angegeben wurde.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Manifestattribut activity:screenOrientation
fest oder verwenden Sie die Activity#setRequestedOrientation
API.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
auf „false“ fest.
Eigenschafts-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_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
Hinweis:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
QUERFLÄCHE_ÜBERSCHREIBEN
Aktiviert die Ausrichtung reverseLandscape für alle Aktivitäten im Paket. Sofern OVERRIDE_ANY_ORIENTATION nicht aktiviert ist, wird die Überschreibung nur verwendet, wenn durch die Aktivität keine andere feste Ausrichtung angegeben wurde.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Manifestattribut activity:screenOrientation
fest oder verwenden Sie die Activity#setRequestedOrientation
API.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
auf „false“ fest.
Eigenschafts-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_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
Hinweis:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_ANY_ORIENTATION
Die Überschreibungen OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR und OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE sind zulässig.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Manifestattribut activity:screenOrientation
fest oder verwenden Sie die Activity#setRequestedOrientation
API.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
auf „false“ fest.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
NUR_FOR_CAMERA_ÜBERSCHREIBEN
Die Überschreibungen OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR und OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE werden nur bei aktiver Kameraverbindung wirksam.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Manifestattribut activity:screenOrientation
fest oder verwenden Sie die Activity#setRequestedOrientation
API.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
auf „false“ fest.
Eigenschafts-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_ORIENTATION_ONLY_FOR_CAMERA <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
Hinweis:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
Beschränkt die Anzeigeausrichtung auf die natürliche Ausrichtung im Querformat, wenn die folgenden Bedingungen erfüllt sind:
- Aktivität wird im Vollbildmodus angezeigt
- Die Komponenteneigenschaft „
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
“ zur Deaktivierung ist nicht aktiviert - Die Einstellung zum Ignorieren der Ausrichtungsanfrage des Geräteherstellers ist für das Display aktiviert
- Natürliche Ausrichtung des Displays ist 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_UNDEFINED_ORIENTATION_TO_PORTRAIT
.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
auf „false“ fest.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
Aktiviert eine Kompatibilitätsrichtlinie, bei der die Aktualisierung der App-Ausrichtung übersprungen wird, wenn eine App Activity#setRequestedOrientation()
aufruft, wenn die App neu gestartet wird oder eine aktive Kamerakompatibilität aufweist.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Attribut-Flag PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
auf „true“ fest.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
auf „false“ fest.
Eigenschafts-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:Durch die Befehle 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 für eine 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_UNDEFINED_ORIENTATION_TO_PORTRAIT
.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
auf „false“ fest.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION
Schließt Pakete vom Ignorieren von Ausrichtungsanfragen aus, die von Geräteherstellern für einen Anzeigebereich oder das gesamte Display aktiviert werden können.
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_UNDEFINED_ORIENTATION_TO_PORTRAIT
.
Überschreiben deaktivieren oder deaktivieren
Keine Deaktivierung. Das Deaktivieren der Überschreibung kann gefährlich sein, wenn die App nicht mit einem Gerät kompatibel ist, bei dem die Einstellung zum Ignorieren der Ausrichtungsanfrage durch den Gerätehersteller aktiviert ist. Wenden Sie sich an Android Developer Relations, um die Überschreibung zu deaktivieren.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
NEVER_SANDBOX_DISPLAY_APIS
Erzwingt, dass Pakete nie eine Display
-API-Sandbox auf eine Aktivität im Letterbox- oder Größenkompatibilitätsmodus angewendet werden. Die Display
-APIs stellen weiterhin Anzeigebereichsgrenzen bereit
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Deklarieren Sie Aktivitäten, deren Größe geändert werden kann, indem Sie entweder das Manifestattribut android:resizeableActivity
auf „wahr“ oder das Metadaten-Flag android.supports_size_changes
auf „wahr“ setzen.
Apps optimieren
Apps, für die eine vollständige Größenanpassung deklariert wird, sollten zur Positionierung von UI-Elementen nie auf die Anzeigegröße angewiesen sein. Migrieren Sie Ihre App zu aktuellen APIs, die WindowMetrics
bereitstellen. Wenn Sie Jetpack Compose verwenden, nutzen Sie die WindowSizeClass
API, um die Benutzeroberfläche basierend auf dem Bildschirmbereich der App auf dem aktuellen Bildschirm zu zeichnen. Weitere Informationen finden Sie unter Unterstützung verschiedener Bildschirmgrößen.
Überschreiben deaktivieren oder deaktivieren
Keine Deaktivierung. Migrieren Sie von verworfenen APIs.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
ALWAYS_SANDBOX_DISPLAY_APIS
Erzwingt, dass Pakete unabhängig vom Windowing-Modus immer eine Display
-API-Sandbox angewendet werden. Die Display
APIs stellen immer die Anwendungsgrenzen bereit.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Deklarieren Sie Aktivitäten, deren Größe nicht geändert werden kann, indem Sie entweder das android:resizeableActivity
-Attribut auf „false“ oder das android.supports_size_changes
-Metadaten-Flag auf „false“ setzen.
Apps optimieren
Apps, für die eine vollständige Größenanpassung deklariert wird, sollten zur Positionierung von UI-Elementen nie auf die Anzeigegröße angewiesen sein. Migrieren Sie Ihre Anwendung von eingestellten APIs auf aktuelle APIs, die WindowMetrics
bereitstellen. Weitere Informationen finden Sie unter WindowMetricsCalculator
.
Überschreiben deaktivieren oder deaktivieren
Keine Deaktivierung. Migrieren Sie von verworfenen APIs.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
Erzwingt, dass Pakete die folgenden View
APIs in einer Sandbox gemäß Aktivitätsgrenzen ausführen:
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Beheben Sie das Problem im Anwendungscode, indem Sie APIs verwenden, die die Grenzen des App-Fensters und Offsets relativ zum App-Fenster angeben, anstatt die Grenzen der Geräteanzeige und Offsets relativ zur Geräteanzeige.
Apps optimieren
Apps sollten View
APIs verwenden und dabei die Möglichkeit berücksichtigen, dass Letterbox- und Mehrfenstermodus auf die App angewendet werden (siehe WindowMetricsCalculator
).
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS
auf „false“ fest.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
DEAKTIVIERUNG_DES_KAMERA_ÜBERSCHREIBEN
Deaktiviert die erzwungene Rotation. Verbessert die Nutzererfahrung in einigen Apps.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
auf „false“ fest.
Apps optimieren
Verlassen Sie sich nicht auf die Ausrichtung des Kamerasensors im Cache oder Geräteinformationen. Informationen zur Kompatibilität von Kameras finden Sie unter Einführung in den Kamerasucher und Unterstützung von Oberflächen mit anpassbarer Größe in der Kamera-App.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
auf „true“ fest.
Eigenschafts-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, wodurch die erzwungene Rotation entfernt wird:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
So entfernen Sie die Überschreibung, die eine erzwungene Rotation ermöglicht:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
Hinweis:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
KAMERA_KOMPAT_DEAKTIVIEREN_AKTUALISIEREN
Deaktiviert die Aktivitätsaktualisierung nach erzwungener Rotation. Verbessert die Nutzerfreundlichkeit in Apps, wenn durch die Aktualisierung ein Statusverlust verursacht wird.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
auf „false“ fest.
Apps optimieren
Verlassen Sie sich nicht auf die Ausrichtung des Kamerasensors im Cache oder Geräteinformationen. Informationen zur Kompatibilität von Kameras finden Sie unter Einführung in den Kamerasucher und Unterstützung von Oberflächen mit anpassbarer Größe in der Kamera-App.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
auf „true“ fest.
Eigenschafts-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, mit der Aktivitäten aktualisiert werden können:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
Hinweis:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
ÜBERSCHRIFT_KAMERA_KOMPAT_ENABLE_REFRESH_ÜBER_PAUSE
Dadurch werden die Pakete, für die die Aktivität angewendet wird, mit onResume()
→ onPause()
→ onResume()
Zyklus statt onResume()
→ onStop()
→ onResume()
aktualisiert, nachdem die Rotation der Kamerakompatibilität erzwungen wird.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
auf „true“ fest.
Apps optimieren
Verlassen Sie sich nicht auf die Ausrichtung des Kamerasensors im Cache oder Geräteinformationen. Informationen zur Kompatibilität von Kameras finden Sie unter Einführung in den Kamerasucher und Unterstützung von Oberflächen mit anpassbarer Größe in der Kamera-App.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
auf „false“ fest.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
LAND_KAMERA_IN_PORTRÄT_ÜBERSCHREIBEN
Erzwingt, dass die Kameraausgabe auf die entgegengesetzte Ausrichtung zugeschnitten wird, wenn die Kamera im Hochformat nicht mit der natürlichen Geräteausrichtung übereinstimmt. Viele Apps können diese Situation nicht bewältigen. Andernfalls werden gestreckte Bilder angezeigt.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Attribut-Flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
auf „true“ fest.
Apps optimieren
Verlassen Sie sich nicht auf die Ausrichtung des Kamerasensors im Cache oder Geräteinformationen. Informationen zur Kompatibilität von Kameras finden Sie unter Einführung in den Kamerasucher und Unterstützung von Oberflächen mit anpassbarer Größe in der Kamera-App.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
auf „false“ fest.
Eigenschafts-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, wodurch die innere Frontkamera zugeschnitten wird:
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:Durch die Befehle 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 Vollbildaufnahme zu erzwingen und den Datenschutz für Nutzer zu gefährden, indem die Inhalte von Benachrichtigungen, die im Vollbildmodus, aber nicht mit der App-Bildschirmfreigabe aufgenommen werden, offengelegt werden. Außerdem werden alle Apps unabhängig vom Windowing-Modus angezeigt.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Das Standardverhalten für die Medienprojektion wird in Android 14, API-Ebene 34 mit createScreenCaptureIntent()
implementiert. Nutzer können dann unabhängig vom Windowing-Modus entscheiden, ob sie den Vollbildmodus oder ein einzelnes App-Fenster teilen möchten. Alternativ können Sie createScreenCaptureIntent(MediaProjectionConfig)
mit einem MediaProjectionConfig
-Argument aufrufen, das von einem Aufruf an createConfigForUserChoice()
zurückgegeben wurde.
Apps optimieren
Nutzer können auswählen, ob während der Medienprojektion das gesamte Display des Geräts oder ein App-Fenster geteilt werden soll. Dies ist ab Android 14 die Standardeinstellung.
Die App-Größe (resizeableActivity="true"
) kann angepasst werden, damit der Mehrfenstermodus unterstützt wird.
Überschreiben deaktivieren oder deaktivieren
Da der Datenschutz für Nutzer sehr wichtig ist, kann diese Überschreibung in Ihrer App nicht deaktiviert oder deaktiviert werden.
Eigenschafts-Flags zum Anpassen der Überschreibung
Keine.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an, wodurch die Deaktivierung der teilweisen Bildschirmfreigabe durch die App, d. h. die Aktivierung der Teilfreigabe, abgebrochen wird:
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
So heben Sie die Überschreibung auf, mit der die App die Teilfreigabe des Bildschirms deaktivieren kann:
adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
Hinweis:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_AKTIVER_COMPAT_FAKE_FOCUS
Ermöglicht das Senden eines vorgetäuschten Fokus für Apps ohne Fokus im geteilten Bildschirmmodus. Einige Spiel-Engines warten darauf, sich auf den Fokus zu konzentrieren, bevor sie den Inhalt der App zeichnen. Mit einem gefälschten Fokus können Apps vermeiden, dass sie geschwärzt bleiben, wenn sie fortgesetzt werden und noch nicht im Fokus sind.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
auf „true“ fest.
Apps optimieren
Sie können dieses Problem vermeiden, wenn Ihre App mehrere Ausrichtungen und Konfigurationsänderungen gut unterstützt. Mache deine App bereit für einen großen Bildschirm. Beachte dabei die Qualitätsrichtlinien für Apps auf großen Bildschirmen.
Wenn Sie die Unity-Spiele-Engine ausführen, führen Sie ein Upgrade auf Version 2019.4.40 oder höher aus und exportieren Sie Ihr Spiel noch einmal. Lasse die Option Resizable Window
in den Android Player-Einstellungen aktiviert.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
auf „false“ fest.
Eigenschafts-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:Durch die Befehle wird die Überschreibung nur vorübergehend angewendet oder entfernt.