In Android 8.0 konnten Nutzer zwischen automatischem Drehen und Hochformat wechseln. über die Kachel „Schnelleinstellungen“ oder die Displayeinstellungen. In Android 9 haben wir im Hochformat drehen, um unbeabsichtigte Drehungen zu vermeiden, indem Sie aktuelle Bildschirmdrehung, auch wenn sich die Geräteposition ändert. Nutzer können auslösen manuelle Drehung manuell durch Drücken einer neuen Schaltfläche in der Navigationsleiste. Wir haben den Hochformatmodus in Rotationssperre umbenannt. Er wird beim automatischen Drehen aktiviert. ist deaktiviert. Der automatische Drehmodus bleibt unverändert.
Wenn sich das Gerät im Rotationssperremodus befindet, können Nutzer ihren Bildschirm auf beliebige
Drehung unterstützt von der oberen, sichtbaren Aktivität (beim aktuellen System).
Einschränkungen). Wenn die oberste Aktivität in mehreren Rotationen in
automatisch drehen, sollten dieselben Optionen im Sperrmodus für die Drehung verfügbar sein.
mit einigen Ausnahmen basierend auf den screenOrientation
der Aktivität
Einstellung.
Im Modus „Rotationssperre“ wird beim Drehen des Geräts eine Schaltfläche in der Navigationsleiste angezeigt
Änderungen. Dazu muss der Ausrichtungssensor des Geräts aktiv bleiben
auch wenn das automatische Drehen deaktiviert ist. Durch Tippen auf diese Schaltfläche wird die Nutzerrotation festgelegt.
Einstellung (Settings.System.USER_ROTATION
). WindowManager verwendet diese
sowie andere Details zur
wichtigsten Aktivität und zum Systemstatus,
um die Rotation des Systems zu ändern. WindowManager verwendet weiterhin die Nutzerrotation.
Präferenz bei der Entscheidung, in welche Drehung das System beim Wechsel zu
einer anderen Aktivität.
Die Einstellung für die Nutzerrotation sollte beibehalten werden, wenn zwischen den Aktivitäten gewechselt wird. Da die meisten Smartphone-Nutzer jedoch nur kurz im Querformat arbeiten möchten, vorübergehenden Zeitraum haben, haben wir die Verzerrungen durch natürliche Ausrichtung hinzugefügt. Nutzerrotation auf die natürliche Ausrichtung des Geräts zurückgesetzt, sobald die ändert sich die Systemdrehung auf die natürliche Ausrichtung des Geräts. Bei den meisten Smartphones Die natürliche Ausrichtung des Geräts ist Hochformat (0o). Nutzerrotation wird zurückgesetzt wenn eine App im Hochformat verwendet, das Smartphone gesperrt oder Sie kehren zum Arbeitsbereich des Launchers zurück.
Die Rotationsinteraktionen für Nutzer haben sich in den letzten zehn Jahren kaum verändert. Nutzer*innen ist diese Funktion möglicherweise aufgrund ihrer bisherigen Rotation schwer zu finden. und Schaltflächen in der Navigationsleiste. Aus diesem Grund haben wir im Einführungsmodus auf die Schaltfläche zum Drehen, mit der es hervorgehoben wird. Einleitung nur für die ersten Schaltflächeninteraktionen. Einführungsmodus ist deaktiviert.
Quelle
Unterstützung für Rotationsvorschläge wurde hinzugefügt Android 9 Die meisten Änderungen sind im folgenden Dateien.
services/.../server/policy/PhoneWindowManager.java
: <ph type="x-smartling-placeholder">- </ph>
- Hooks, die die Ausgabe von
WindowOrientationListener
verbrauchen (MyOrientationListener
, verantwortlich für Monitoring Sensoren, um festzustellen, ob das Gerät gedreht wurde) WindowOrientationListener
bleibt aktiv, auch wenn Automatisches Drehen ist deaktiviert (sieheneedSensorRunningLp()
).- Berechnet die Systemrotation gemäß der Nutzerrotationseinstellung, oben
Einstellungen für „Aktivität“
screenOrientation
und Systemstatus (sieherotationForOrientationLw()
) - Bestimmen Sie, ob sich die obere Aktivität in einer bestimmten Drehung drehen kann (siehe
isRotationChoicePossible()
)
- Hooks, die die Ausgabe von
SystemUI/.../statusbar/phone/NavigationBarFragment
: <ph type="x-smartling-placeholder">- </ph>
- Legt fest, ob die Navigationsleistenschaltfläche beim Drehen angezeigt werden soll
Rückrufvorschläge von
PhoneWindowManager
(sieheonRotationProposal()
) - Handles, wann die Schaltfläche zum Drehen der Navigationsleiste (siehe Aufrufe der
setRotateSuggestionButtonState(false)
) - Behandelt Zeitüberschreitungen von Schaltflächen, einschließlich des Sonderfalls, wenn das Navigationsleiste ist ausgeblendet (üblicherweise im Vollbildmodus)
- Setzt die Nutzereinstellung bei Rückkehr auf die natürliche Umgebung des Geräts zurück
Ausrichtung (
mRotationWatcher
) - Er wählt den passenden Stil für die Animation der Navigationsleistenschaltfläche
angewendet in
NavigationBarView
(sieheonRotationProposal()
) - Logik für Einführungsmodus hinzugefügt, einschließlich spezialisierter Animationen
(siehe Verweise auf
Settings.Secure.NUM_ROTATION_SUGGESTIONS_ACCEPTED
) - Implementiert das Rotations-Flag „disable2“ (siehe
disable()
)
- Legt fest, ob die Navigationsleistenschaltfläche beim Drehen angezeigt werden soll
Rückrufvorschläge von
SystemUI/.../statusbar/phone/NavigationBarView.java
: <ph type="x-smartling-placeholder">- </ph>
- Legt die Animation des Schaltflächensymbols fest, damit sie der ausstehenden Rotation entspricht (siehe
updateRotateSuggestionButtonStyle()
) - Bearbeitet die Sichtbarkeit von Schaltflächen (siehe
setRotateButtonVisibility()
), einschließlich Logik zum Ausblenden Schaltfläche zum Drehen, wenn bestimmte Bedienungshilfen aktiv sind (unter Berücksichtigung des Navigationsleisten-Schaltflächenstapels ganz rechts)
- Legt die Animation des Schaltflächensymbols fest, damit sie der ausstehenden Rotation entspricht (siehe
SystemUI/res/layout/menu_ime.xml
: <ph type="x-smartling-placeholder">- </ph>
- Enthält ein neues
KeyButtonView
für die Schaltfläche „Drehen“, über dem Menü und der IME/Tastaturauswahl, aber unter der Schaltfläche „Bedienungshilfen“
- Enthält ein neues
SystemUI/res/drawable/ic_sysbar_rotate_button.xml
: <ph type="x-smartling-placeholder">- </ph>
- Komplexe
AnimatedVectorDrawable
zur Animation der Schaltfläche zum Drehen der Navigationsleiste - Stile (in
SystemUI/res/values/styles.xml
) werden für Folgendes verwendet: Start- und Endwinkel für Drehbewegung festlegen, sodass dasselbe Zeichnungselement werden verwendet, um verschiedene Start- und Endrotationen zu animieren. - Symbolfärbung wird über
TintedKeyButtonDrawable
eingestellt
- Komplexe
Implementierung
Android 9 umfasst alle notwendigen Änderungen, Rotationsvorschläge funktionieren für Geräte, die Software-Navigationstasten verwenden (z. B. „Zurück“ oder „Zuhause“).
Gerätehersteller, die Geräte mit Hardware-Navigationstasten herstellen, zur Implementierung dieser Funktion eine eigene System-UI entwerfen und implementieren. oder die Funktion deaktivieren. Es wird empfohlen, jede eingeführte Oberfläche einfach zu bedienen sein, wenn das Gerät auf 90 o oder 180 o zum aktuellen System gehalten wird Rotation und ist schnell zugänglich. Daher ist die Verwendung von Benachrichtigungen (wie beim IME/Tastatur-Picker) wird nicht empfohlen.
Die Hardwareanforderungen für die Verwendung dieser Funktion stimmen mit den Anforderungen überein automatisch drehen.
Für eine konsistente Implementierung muss
die Einstellung für die Nutzerrotation
(Settings.System.USER_ROTATION
) wird auf den natürlichen Modus des Geräts zurückgesetzt
Rotation, wenn sich das System aus irgendeinem Grund in die natürliche Rotation des Geräts ändert
wenn das automatische Drehen deaktiviert ist. Dies geschieht mit der bereitgestellten Implementierung (siehe
NavigationBarFragment.mRotationWatcher
).
In StatusBarManager.disable2
gibt es ein neues Flag, das vorübergehend
verhindern, dass Rotationsvorschläge angezeigt werden. Weitere Informationen finden Sie unter
StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS
Dieses Flag muss
in allen Implementierungen respektiert, da sie von kritischen System-Apps verwendet werden, einschließlich
Einrichtungsassistent. Die bereitgestellte Implementierung unterstützt dies (siehe
NavigationBarFragment.disable()
.
Wir empfehlen dringend, die Funktion zu aktivieren und dem AOSP zu folgen Implementierung nach Möglichkeit. Unser Ziel ist es, die Rotation auf verschiedenen Geräten. Das spiegelt die Einheitlichkeit wider, die auf den meisten Smartphones heutzutage automatisch drehen und Hochformat sperren.
Personalisierung
Da Rotationsvorschläge nur im Sperrmodus für die Drehung angezeigt werden (automatisches Drehen deaktiviert)
können Sie festlegen, ob die Funktion bei Neuinstallationen
Das automatische Drehen ist standardmäßig deaktiviert. Weitere Informationen finden Sie unter
def_accelerometer_rotation
Zoll
SettingsProvider/res/values/defaults.xml
, um Standardänderungen vorzunehmen.
Nutzer können unabhängig von der Standardeinstellung jederzeit ändern, ob das automatische Drehen aktiviert ist oder nicht. über die Kachel drehen in den Schnell- oder Anzeigeeinstellungen.
Zertifizierungsstufe
Zu Testzwecken lässt sich die Funktion durch Ändern einer Markierung ein- und ausschalten.
Settings.Secure
-Wert. Dies wurde am einfachsten mit dem
folgenden Befehl von einer privilegierten ADB-Instanz:
adb shell settings put secure show_rotation_suggestions <x>
Legen Sie „x“ für „Aus“ auf 0
und für „Ein“ auf „1
“ fest.
Zu Testzwecken kann der Einführungsmodus zurückgesetzt werden, indem die zugehörigen
Settings.Secure
-Wert. Dies wurde am einfachsten mit dem
folgenden Befehl von einer privilegierten ADB-Instanz:
adb shell settings put secure num_rotation_suggestions_accepted 0