Android 9 (API-Level 28) bietet tolle neue Funktionen für Nutzenden und Entwickelnden. In diesem Dokument werden die Neuerungen für Entwickler beschrieben.
Weitere Informationen zu den neuen APIs finden Sie in der Bericht zu den API-Unterschieden oder rufen Sie die Android API-Referenz Weitere Informationen Weitere Informationen zu Verhaltensänderungen unter Android 9 zu Bereichen, in denen sich Plattformänderungen auf Ihre Apps auswirken können.
Indoor-Positionierung mit Wi-Fi RTT
Android 9 unterstützt das Wi-Fi IEEE 802.11-2016 mit Plattformunterstützung Wi-Fi Round-Trip-Time (RTT) (Wi-Fi Round-Trip-Time, RTT), damit Sie die Vorteile Indoor-Positionierung in Ihren Apps.
Auf Geräten mit Android 9 mit Hardwareunterstützung können Ihre Apps die
RTT APIs zur Messung des
Entfernung zu RTT-fähigen WLAN-Zugangspunkten (ZPs) in der Nähe. Das Gerät muss
Standortdienste aktiviert und die WLAN-Suche aktiviert (unter
Einstellungen > Standort) und Ihre App muss über die
ACCESS_FINE_LOCATION
Berechtigung. Das Gerät muss keine Verbindung zu den Zugangspunkten herstellen, um RTT zu verwenden.
Aus Datenschutzgründen kann die Entfernung zum
Zugangspunkt verfügen die Zugangspunkte nicht über diese Informationen.
Wenn Ihr Gerät die Entfernung zu drei oder mehr Zugangspunkten misst, können Sie Multilaterationsalgorithmus ermittle die Geräteposition, die am besten zu diesen Messungen. Das Ergebnis ist in der Regel auf 1 bis 2 Meter genau.
Mit dieser Genauigkeit können Sie neue Erlebnisse schaffen, z. B. innerhalb der Gebäudenavigation. und differenzierte standortbezogene Dienste, z. B. die differenzierte Sprachsteuerung. (z. B. "Schalte dieses Licht") und standortbasierte Informationen (z. B. „Gibt es Sonderangebote für dieses Produkt?“
Informationen zur verwendeten WiFi RTT API finden Sie in der <ph type="x-smartling-placeholder"></ph> Android WifiRttScan-Demo-App
Weitere Informationen finden Sie unter WLAN-Standort: Ermittlung der Entfernung mit RTT
Unterstützung für Display-Aussparung
Android 9 bietet Unterstützung für die neuesten randlosen Displays
mit Display-Aussparungen für Kameras und Lautsprecher. Die
DisplayCutout
können Sie die Position und Form von nicht funktionalen Bereichen ermitteln,
sollte nicht angezeigt werden. Um die Existenz und Platzierung von
diese Ausschnitte mithilfe der
getDisplayCutout()
.
Ein neues Fenster-Layout-Attribut,
layoutInDisplayCutoutMode
,
kannst du den Inhalt deiner App um die Aussparungen eines Geräts herum anordnen. Sie können
dieses Attribut auf einen der folgenden Werte festlegen:
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
Du kannst eine Bildschirmaussparung auf jedem Gerät oder Emulator mit Android 9 simulieren wie folgt:
- Aktivieren Sie die Entwickleroptionen.
- Scrollen Sie auf dem Bildschirm Entwickleroptionen nach unten zum Abschnitt Zeichnung. und wählen Sie Display mit Aussparung simulieren aus.
- Wählen Sie die Größe des Ausschnitts aus.
Benachrichtigungen
Mit Android 9 wurden die Benachrichtigungen verbessert. für Entwickler mit Ausrichtung auf API-Level 28 und höher verfügbar.
Beispielcode, der Benachrichtigungen verwendet, einschließlich Android 9-Funktionen, finden Sie auf der Personen Leseprobe.
Verbesserte Nachrichtenfunktion
Ab Android 7.0 (API-Level 24) kannst du eine Antwort hinzufügen, um auf oder anderen Text direkt aus einer Benachrichtigung eingeben. Mit Android 9 diese Funktion mit den folgenden Verbesserungen:
Vereinfachte Unterstützung für Gesprächsteilnehmer:
Person
-Klasse wird verwendet, um Personen zu identifizieren, die an einer Konversation beteiligt sind, einschließlich ihrer und URIs enthalten. Viele andere APIs, z. B.addMessage()
, nutzen jetzt diePerson
-Klasse anstelle einerCharSequence
. KlassePerson
unterstützt auch das Builder-Designmuster.Unterstützung für Bilder: Android 9 zeigt jetzt Bilder in Messaging-Benachrichtigungen an auf Smartphones. Sie können
setData()
um ein Bild anzuzeigen. Das folgende Code-Snippet zeigt, , um einPerson
und eine Nachricht mit einem Bild zu erstellen.
Kotlin
// Create new Person. val sender = Person() .setName(name) .setUri(uri) .setIcon(null) .build() // Create image message. val message = Message("Picture", time, sender) .setData("image/", imageUri) val style = Notification.MessagingStyle(getUser()) .addMessage("Check this out!", 0, sender) .addMessage(message)
Java
// Create new Person. Person sender = new Person() .setName(name) .setUri(uri) .setIcon(null) .build(); // Create image message. Message message = new Message("Picture", time, sender) .setData("image/", imageUri); Notification.MessagingStyle style = new Notification.MessagingStyle(getUser()) .addMessage("Check this out!", 0, sender) .addMessage(message);
Antworten als Entwürfe speichern: Ihre App kann die
EXTRA_REMOTE_INPUT_DRAFT
die vom System gesendet wird, wenn ein Nutzer versehentlich eine Messaging-Benachrichtigung schließt. Mit dieser zusätzlichen Funktion können Sie Textfelder in der App vorab ausfüllen, damit Nutzende ihre Antwort zu Ende zu bringen.Feststellen, ob es sich bei einer Unterhaltung um eine Gruppenunterhaltung handelt:
setGroupConversation()
um eine Unterhaltung gezielt als Gruppen- oder Nicht-Gruppenunterhaltung zu kennzeichnen.Legen Sie die semantische Aktion für einen Intent fest:
setSemanticAction()
können Sie Aktionen semantische Bedeutung verleihen, z. B. „als gelesen markieren“, „Löschen“, „antworten“, und so weiter.Intelligente Antwort: Unter Android 9 werden dieselben Antwortvorschläge unterstützt wie in der Messaging-App. Verwenden Sie
RemoteInput.setChoices()
ein Array mit Standardantworten für den Nutzer bereitzustellen.
Kanaleinstellungen, Nachrichten an alle und „Bitte nicht stören“
Mit Android 8.0 wurden Benachrichtigungskanäle eingeführt. So können Sie ein anpassbarer Kanal für jede Art von Benachrichtigung, die angezeigt werden soll. Android 9 vereinfacht die Einstellungen für Benachrichtigungskanäle durch folgende Änderungen:
Channelgruppen blockieren: Nutzer können jetzt ganze Gruppen von Channels blockieren. in den Benachrichtigungseinstellungen einer App ändern. Sie können die
isBlocked()
um zu ermitteln, wann eine Gruppe blockiert ist. Benachrichtigungen für Kanäle in dieser Gruppe.Außerdem kann Ihre App die aktuellen Einstellungen der Channelgruppe mit das neue
getNotificationChannelGroup()
.Neue Broadcast-Intent-Typen: Das Android-System sendet jetzt Broadcast-Intents wenn sich der Blockierungsstatus von Benachrichtigungskanälen und Channelgruppen ändert. Die App, zu der der blockierte Kanal oder die Gruppe gehört, kann diese Intents überwachen und entsprechend reagieren. Weitere Informationen zu diesen Intent-Aktionen und Extras finden Sie in der aktualisierten Konstantenliste
NotificationManager
Referenz. Informationen zum Reagieren auf Broadcast-Intents finden Sie unter Nachrichten an alle:NotificationManager.Policy
gibt es drei neue Prioritätskategorien für „Bitte nicht stören“:PRIORITY_CATEGORY_ALARMS
priorisiert Alarme.PRIORITY_CATEGORY_MEDIA
priorisiert Töne aus Medienquellen wie der Medien- und Sprachnavigation.PRIORITY_CATEGORY_SYSTEM
Systemtöne priorisiert.
Für
NotificationManager.Policy
gibt es außerdem sieben neue „Bitte nicht stören“-Konstanten kann verwendet werden, um visuelle Unterbrechungen zu unterdrücken:SUPPRESSED_EFFECT_FULL_SCREEN_INTENT
Verhindert, dass die Benachrichtigung eine Vollbildaktivität startet.SUPPRESSED_EFFECT_LIGHTS
blockiert die Benachrichtigungsleuchten.SUPPRESSED_EFFECT_PEEK
verhindert, dass Benachrichtigungen kurz in den sichtbaren Bereich geschoben werden ("Einblenden").SUPPRESSED_EFFECT_STATUS_BAR
verhindert, dass Benachrichtigungen in der Statusleiste auf Geräten angezeigt werden, die Statusleisten unterstützen.SUPPRESSED_EFFECT_BADGE
blockiert Badges auf Geräten, die Kennzeichen unterstützen. Weitere Informationen finden Sie unter Benachrichtigungskennzeichen ändernSUPPRESSED_EFFECT_AMBIENT
blockiert Benachrichtigungen auf Geräten, die Bildschirmschoner unterstützen.SUPPRESSED_EFFECT_NOTIFICATION_LIST
verhindert, dass Benachrichtigungen in der Listenansicht auf Geräten angezeigt werden, die eine Listenansicht unterstützen, z. B. die Benachrichtigungsleiste oder den Sperrbildschirm.
Unterstützung mehrerer Kameras und Kameraupdates
Auf Geräten mit Android 9 kannst du auf Streams zugreifen gleichzeitig von zwei oder mehr physischen Kameras. Auf Geräten mit Kameras mit Dual-Front- oder Rückkamera können Sie innovative Funktionen, die mit einer einzigen Kamera nicht möglich sind, wie beispielsweise Zoom, Bokeh und Stereovision verwenden. Mit der API können Sie auch eine logische oder fusionierte Kamerastream, der automatisch zwischen zwei oder mehr Kameras wechselt.
Zu den weiteren Verbesserungen bei der Kamera gehören zusätzliche Sitzungs- Parameter mit denen sich Verzögerungen bei der ersten Aufnahme vermeiden lassen. Und dank der Funktion zum Teilen Kameraclients können verschiedene Anwendungsfälle abdecken, ohne die App anzuhalten oder zu starten. Kamerastreaming. Wir haben außerdem APIs für displaybasiertes Flash-Element Support und Zugriff auf IIS Zeitstempel für Bildstabilisierung und Spezialeffekte auf App-Ebene.
Unter Android 9 wurden mehrere Kameras
API
unterstützt monochrome Kameras für Geräte mit
FULL
oder
LIMITED
-Funktion.
Die monochrome Ausgabe erfolgt über die
YUV_420_888
mit Y als Graustufen, U (Cb) als 128 und V (Cr) als 128.
Android 9 ermöglicht auch die Unterstützung externer USB-Sticks/UVC-Dateien. Kameras an unterstützten Geräten.
ImageDecoder für Drawables und Bitmaps
Mit Android 9 wird die
ImageDecoder
-Klasse, die einen modernisierten Ansatz zum Decodieren von Bildern bietet. Diesen Kurs verwenden
anstelle von BitmapFactory
und BitmapFactory.Options
APIs
Mit ImageDecoder
können Sie ein
Drawable
oder
Bitmap
aus einem Byte-Zwischenspeicher, einer Datei,
oder einen URI. Um ein Bild zu decodieren, rufen Sie zunächst
createSource()
durch die Quelle des codierten Bildes. Rufen Sie dann
decodeDrawable()
oder decodeBitmap()
indem Sie den ImageDecoder.Source
übergeben.
um ein Drawable
-Objekt zu erstellen,
oder Bitmap
. So ändern Sie die
OnHeaderDecodedListener
an
decodeDrawable()
oder decodeBitmap()
. ImageDecoder
Anruf
onHeaderDecoded()
mit der Standardbreite und -höhe des Bildes, sobald diese bekannt sind.
Wenn das codierte Bild ein animiertes GIF oder WebP ist, gibt decodeDrawable()
den Fehlerwert
Drawable
, die eine Instanz des
AnimatedImageDrawable
.
Es gibt verschiedene Methoden, um Bildeigenschaften festzulegen:
- Um das decodierte Bild auf eine exakte Größe zu skalieren, übergeben Sie die Zielabmessungen in
setTargetSize()
Sie können Bilder auch anhand einer Stichprobengröße skalieren. Übergeben Sie die Stichprobengröße direkt ansetTargetSampleSize()
- Um ein Bild zuzuschneiden, das innerhalb des Bereichs des skalierten Bildes liegt, rufen Sie
setCrop()
- Um eine änderbare Bitmap zu erstellen, übergeben Sie
true
insetMutableRequired()
Mit ImageDecoder
kannst du deinen Bildern auch benutzerdefinierte und komplizierte Effekte hinzufügen
wie abgerundete Ecken oder
Kreismasken. Verwenden Sie
setPostProcessor()
mit einer Instanz des
PostProcessor
um beliebige Zeichenbefehle auszuführen.
Animation
Mit Android 9 wird die
AnimatedImageDrawable
zum Zeichnen und Anzeigen animierter GIF- und WebP-Bilder.
AnimatedImageDrawable
funktioniert ähnlich wie
AnimatedVectorDrawable
da der Rendering-Thread die Animationen von AnimatedImageDrawable
steuert.
Der Rendering-Thread verwendet zum Decodieren auch einen Worker-Thread, sodass bei der Decodierung
andere Vorgänge im Renderingthread beeinträchtigen. Diese Implementierung ermöglicht
um ein animiertes Bild anzuzeigen, ohne die Updates oder
andere Ereignisse im UI-Thread Ihrer App beeinträchtigen.
Ein AnimatedImageDrawable
kann mit einer Instanz von
ImageDecoder
Die folgenden
Code-Snippet zeigt, wie Sie mit ImageDecoder
Ihr
AnimatedImageDrawable
:
Kotlin
@Throws(IOException::class) private fun decodeImage() { val decodedAnimation = ImageDecoder.decodeDrawable( ImageDecoder.createSource(resources, R.drawable.my_drawable)) // Prior to start(), the first frame is displayed. (decodedAnimation as? AnimatedImageDrawable)?.start() }
Java
private void decodeImage() throws IOException { Drawable decodedAnimation = ImageDecoder.decodeDrawable( ImageDecoder.createSource(getResources(), R.drawable.my_drawable)); if (decodedAnimation instanceof AnimatedImageDrawable) { // Prior to start(), the first frame is displayed. ((AnimatedImageDrawable) decodedAnimation).start(); } }
ImageDecoder
bietet mehrere Methoden, mit denen Sie das Image weiter ändern können.
Sie können beispielsweise die Methode
setPostProcessor()
-Methode zur Änderung des Erscheinungsbilds des Bildes, wie z. B. das Anwenden einer Kreismaske oder
abgerundete Ecken.
HDR VP9 Video, HEIF-Bildkomprimierung und Media APIs
Android 9 bietet integrierte Unterstützung für High Dynamic Range (HDR) VP9 Profile 2, So kannst du deinen Nutzern HDR-fähige Filme aus YouTube, Play Filme & Serien und anderen Quellen auf HDR-fähigen Geräten nutzen.
Android 9 unterstützt jetzt auch die Bildcodierung mit dem High Efficiency Image
Dateiformat (HEIF
oder HEIC), wodurch die Komprimierung verbessert und Speicherplatz und Netzwerkdaten reduziert werden.
Nutzung. Beispiele für HEIF-Standbilder werden in der
MediaMuxer
und MediaExtractor
Klassen. Dank der Plattformunterstützung auf Geräten mit Android 9 ist es ganz einfach,
HEIF-Bilder von
Ihrem Back-End-Server verwenden. Nachdem Sie sich vergewissert haben,
App ist mit diesem Datenformat zum Teilen und Anzeigen kompatibel – probier HEIF aus
als Speicherformat für Bilder
in Ihrer App verwenden. Sie können eine JPEG-zu-Heic-Konvertierung
mit ImageDecoder
oder
BitmapFactory
(wobei
Bitmap aus einer JPEG-Datei). Sie können dann
HeifWriter
zum Schreiben von HEIF
Standbilder aus YUV-Bytepuffern oder Instanzen von
Surface
oder
Bitmap
Medienmesswerte sind auch in der
AudioTrack
,
AudioRecord
und MediaDrm
Klassen.
Android 9 führt Methoden zum
Klasse MediaDRM
zum Abrufen von Messwerten, HDCP
Stufen, Sicherheitsniveaus und Anzahl der Sitzungen
Sicherheitsniveaus und Absicherungen absichern. Siehe API-Diff
.
Unter Android 9 fügt die AAudio API
Unterstützung mehrerer zusätzlicher AAudioStream-Attribute, einschließlich Verwendung, Inhalt
und die Eingabevoreinstellung. Mit diesen Attributen können Sie Streams erstellen,
die für VoIP- oder Camcorder-Anwendungen entwickelt wurden. Sie können auch die Sitzungs-ID auf
einen AAudio-Stream mit einem Submix verknüpfen, der Effekte enthalten kann. Verwenden Sie die Methode
AudioEffect
API zur Steuerung der
Effekte.
Mit Android 9 wird die
AudioEffect
API für
Dynamikverarbeitung.
In diesem Kurs kannst du kanalbasierte Audioeffekte erstellen, darunter:
Entzerrung, Multiband-Komprimierung und Begrenzung – über mehrere Stufen hinweg. Die
Anzahl der Bänder und aktiven Phasen kann konfiguriert werden. Die meisten Parameter können
in Echtzeit gesteuert werden.
Vertraulichkeit der Datenkosten in JobScheduler
Ab Android 9, JobScheduler
von Mobilfunkanbietern bereitgestellte Netzwerkstatussignale verwenden, um die Verarbeitung zu verbessern
von netzwerkbezogenen Jobs.
Jobs können ihre geschätzte Datengröße deklarieren, einen Signal-Vorabruf durchführen und
Netzwerkanforderungen. JobScheduler
verwaltet die Arbeit dann gemäß
den Netzwerkstatus. Wenn z. B. das Netzwerk signalisiert, dass es überlastet ist,
JobScheduler
kann große Netzwerkanfragen verzögern. Wenn eine
in einem kostenlosen Netzwerk, kann JobScheduler
Prefetch-Jobs ausführen,
die Nutzererfahrung verbessern, indem Sie z. B. Anzeigentitel vorab abrufen.
Verwenden Sie beim Hinzufügen von Aufträgen setEstimatedNetworkBytes()
,
setPrefetch()
und setRequiredNetwork()
wenn es angebracht ist,
JobScheduler
die Arbeit ordnungsgemäß verarbeiten kann. Wenn Ihr Job ausgeführt wird,
Verwenden Sie das Objekt Network
.
zurückgegeben von
JobParameters.getNetwork()
Andernfalls verwenden Sie implizit das Standardnetzwerk des Geräts,
möglicherweise nicht Ihren Anforderungen entspricht, was zu einer unbeabsichtigten Datennutzung führt.
Neural Networks API 1.1
Einführung der Neural Networks API in Android 8.1 (API-Level 27) entwickelt, um das maschinelle Lernen Android Android 9 erweitert und verbessert die API, indem Unterstützung für neun neue Vorgänge:
- Elementweise mathematische Operationen: <ph type="x-smartling-placeholder">
- Array-Vorgänge: <ph type="x-smartling-placeholder">
Bekanntes Problem:Beim Übergeben
ANEURALNETWORKS_TENSOR_QUANT8_ASYMM
Tensoren zu den
ANEURALNETWORKS_PAD
die für Android 9 und höher verfügbar ist,
Die NNAPI-Ausgabe stimmt möglicherweise nicht mit der Ausgabe des übergeordneten Computers überein
Lernkonzepte wie
TensorFlow Lite Ich
sollte stattdessen nur
<ph type="x-smartling-placeholder"></ph>
ANEURALNETWORKS_TENSOR_FLOAT32
.
bis das Problem behoben ist.
Außerdem bietet die API eine neue Funktion,
ANeuralNetworksModel_relaxComputationFloat32toFloat16()
,
mit der Sie angeben können, ob
ANEURALNETWORKS_TENSOR_FLOAT32
mit einem Bereich und einer Genauigkeit, die dem 16-Bit-Gleitkommawert nach IEEE 754 entspricht
Format.
AutoFill-Framework
Android 9 bietet mehrere Verbesserungen beim automatischen Ausfüllen implementieren, um die Nutzererfahrung beim Ausfüllen . Weitere Informationen zur Verwendung der Autofill-Funktionen in deiner App findest du in der Leitfaden zum Autofill-Framework
Erhöhte Sicherheit
Android 9 bietet eine Reihe von Sicherheitsfunktionen, In den folgenden Abschnitten wird Folgendes zusammengefasst:
Android geschützte Bestätigung
Unterstützte Geräte mit Android 9 oder höher bieten dir die Möglichkeit, die Android Protected Confirmation zu verwenden. Wenn Sie diesen Workflow verwenden, App zeigt dem Nutzer eine Aufforderung an, in der er aufgefordert wird, eine kurze Aussage zu genehmigen. Mit dieser Aussage kann die App bestätigen, dass der Nutzer ein sensible Transaktion wie eine Zahlung.
Wenn der Nutzer die Aussage akzeptiert, empfängt und speichert der Android Keystore eine
kryptografische Signatur, die durch Keyed-Hash-Nachrichtenauthentifizierung geschützt ist
Code (HMAC) zu erstellen. Nachdem der Android Keystore die Gültigkeit der Nachricht bestätigt hat,
kann den aus trustedConfirmationRequired
in der vertrauenswürdigen Quelle generierten Schlüssel verwenden
Ausführungsumgebung (Execution Environment, TEE), um die vom Nutzer akzeptierte Nachricht zu signieren. Die
Signatur zeigt mit sehr hoher Sicherheit an, dass der Nutzer den
und hat ihr zugestimmt.
Achtung : Die Android Protected-Bestätigung enthält keine Informationskanal für den Nutzer. Ihre App darf keine Vertraulichkeitsgarantien, die über die der Android-Plattform hinausgehen. In Verwenden Sie diesen Workflow nicht, um vertrauliche Informationen anzuzeigen, die normalerweise nicht auf dem Gerät des Nutzers zu sehen sind.
Eine Anleitung zur Unterstützung der Android Protected Confirmation-Bestätigung finden Sie in der Android Protected Bestätigung .
Dialogfeld für einheitliche biometrische Authentifizierung
In Android 9 stellt das System Dialogfelder für die biometrische Authentifizierung Ihrer App. Diese Funktion sorgt für ein standardisiertes Design und eine standardisierte Platzierung. für das Dialogfeld aus, sodass die Nutzer sich auf jeden Fall bei der Authentifizierung vertrauenswürdigen biometrischen Anmeldedatenprüfung.
Wenn Ihre App
FingerprintManager
um Nutzern ein Dialogfeld für die Fingerabdruckauthentifizierung anzuzeigen, wechseln Sie zur
BiometricPrompt
. BiometricPrompt
benötigt das System, um die Authentifizierung anzuzeigen
Dialogfeld. Außerdem passt er sein Verhalten an die Art des biometrischen
Authentifizierung, die der Nutzer ausgewählt hat.
Hardware-Sicherheitsmodul
Unterstützte Geräte mit Android 9 oder höher können einen StrongBox Keymaster haben, eine Implementierung des Keymaster HAL, die befindet sich in einem Hardware-Sicherheitsmodul. Das Modul enthält Folgendes:
- Die eigene CPU.
- Sicherer Speicher.
- Ein echter Zufallszahlengenerator.
- Zusätzliche Mechanismen zum Schutz vor Paketmanipulationen und nicht autorisiertem Sideloading von Apps.
Bei der Überprüfung von Schlüsseln, die im StrongBox Keymaster gespeichert sind, bestätigt das System eine die Integrität des Schlüssels mit der vertrauenswürdigen Ausführungsumgebung (Trusted Execution Environment, TEE).
Weitere Informationen zur Verwendung des Strongbox-Schlüsselmasters finden Sie unter Hardwaresicherheit. Modul.
Sicherer Schlüsselimport in den Schlüsselspeicher
Android 9 bietet zusätzliche Sicherheit bei der Schlüsselentschlüsselung, die Möglichkeit, verschlüsselte Schlüssel sicher in den Schlüsselspeicher zu importieren, Mit ASN.1-codiertes Schlüsselformat. Der Keymaster entschlüsselt dann die Schlüssel im Schlüsselspeicher, sodass der Inhalt der Schlüssel nie als Klartext im Hostspeicher des Geräts angezeigt wird.
Weitere Informationen zum Importieren verschlüsselter Schlüssel sicher.
APK-Signaturschema mit Schlüsselrotation
Android 9 unterstützt das APK-Signaturschema v3. Dieses Schema hat die Option, einen Rotationsnachweis in den Signaturblock aufzunehmen, Zertifikat. Durch diese Funktion kann deine App mit einer neuen Signatur signiert werden indem Sie die früheren Signaturzertifikate der APK-Datei mit dem Zertifikat mit dem das jetzt unterschrieben ist.
Weitere Informationen zum Rotieren von Schlüsseln mithilfe von
apksigner
Option, die Schlüsselentschlüsselung nur auf entsperrten Geräten zuzulassen
In Android 9 wird das Flag unlockedDeviceRequired
eingeführt. Mit dieser Option legen Sie
ob der Schlüsselspeicher vor dem Zugriff auf
Entschlüsselung aller laufenden oder gespeicherten Daten mit dem angegebenen Schlüssel. Diese Typen
der Schlüssel eignen sich gut zum Verschlüsseln sensibler Daten auf der Festplatte, z. B.
Gesundheits- oder Unternehmensdaten. Das Flag bietet Nutzern eine höhere Sicherheit, dass das
Daten können nicht entschlüsselt werden, wenn das Gerät gesperrt ist, falls das Smartphone verloren geht
oder gestohlen wurden.
Aktivieren Sie das Flag, um zu verhindern, dass ein Schlüssel entschlüsselt wird, während das Gerät gesperrt ist.
indem Sie true
an setUnlockedDeviceRequired()
übergeben
. Wenn der Bildschirm des Nutzers gesperrt ist, werden alle
versuchen, Daten mit diesem Schlüssel zu entschlüsseln oder zu signieren, schlagen fehl. Für ein gesperrtes Gerät ist ein
PIN, Passwort, Fingerabdruck oder einen anderen vertrauenswürdigen Faktor festlegen,
Zugriff haben.
Unterstützung für Legacy-Verschlüsselung
Geräte mit Android 9, die mit Keymaster 4 ausgeliefert werden, unterstützen die Triple Data API Encryption Algorithm oder Triple DES. Wenn Ihre Anwendung mit der Legacy-Version funktioniert die Triple DES erfordern, verwenden Sie diese Art von Chiffre vertraulichen Anmeldedaten enthält.
Weitere Informationen dazu, wie du deine App sicherer machen kannst, findest du unter Sicherheit für Android Entwickler:
Einstellung von WPS
Wi-Fi Protected Setup (WPS) wurde aus Sicherheitsgründen eingestellt.
Android-Sicherungen
Android 9 bietet neue Funktionen und Entwickleroptionen zum Sichern und Wiederherstellen. Details zu diesen Änderungen finden Sie hier .
Sicherungen der clientseitigen Verschlüsselung
Android 9 unterstützt die Verschlüsselung von Android-Sicherungen mit einem Client-seitigen Secrets. Diese Unterstützung wird in den folgenden Fällen automatisch aktiviert: erfüllt sind:
- Der Nutzer hat Back-up mit Android 9 oder höher.
- Der Nutzer hat einen Bildschirm eingerichtet. Gerät sperren bei dem zum Entsperren eine PIN, ein Muster oder ein Passwort erforderlich ist.
Wenn diese Datenschutzmaßnahme aktiviert ist, werden PIN, Muster oder Passwort des Geräts erforderlich, um Daten aus den Sicherungen wiederherzustellen, die vom Gerät des Nutzers erstellt wurden. Weitere Informationen Weitere Informationen zur Technologie hinter dieser Funktion finden Sie in Google Cloud Key Vault Whitepaper zu Google Workspace.
Für die Sicherung erforderliche Gerätebedingungen definieren
Wenn Ihre App-Daten vertrauliche Informationen oder Einstellungen enthalten, wird Android 9 können Sie ein Gerät definieren, unter welchen Bedingungen Ihre App-Daten sind im Back-up des Nutzers enthalten, z. B. auf Clientseite Verschlüsselung aktiviert ist oder eine lokale Übertragung zwischen Geräten stattfindet.
Weitere Informationen zum Sichern von Daten auf Android-Geräten finden Sie unter Daten sichern Übersicht über die Sicherung.
Bedienungshilfen
Mit Android 9 wurden die Bedienungshilfen verbessert. die es noch einfacher machen, den Nutzenden eine noch bessere User Experience für Ihre App.
Navigationssemantik
Mit den in Android 9 hinzugefügten Attributen kannst du leichter definieren, Bedienungshilfen, insbesondere Screenreader, Bildschirm zu einem anderen zu wechseln. Diese Attribute können sehbehinderten Nutzern helfen, schnell durch den Text in der Benutzeroberfläche Ihrer App navigieren und eine Auswahl treffen können.
In einer Shopping-App kann ein Screenreader Nutzern beispielsweise bei der Navigation helfen. ohne Screenreader von einer Angebotskategorie zur nächsten wechseln alle Artikel in einer Kategorie lesen müssen, bevor sie zur nächsten wechseln.
Titel des Bereichs „Bedienungshilfen“
Unter Android 8.1 (API-Level 27) und niedriger können Bedienungshilfen nicht immer bestimmen, wann ein bestimmter Fensterbereich aktualisiert wurde, beispielsweise wenn eine Aktivität ein Fragment durch ein anderes ersetzt. Bereiche bestehen aus logisch gruppierten, visuell relevanten UI-Elementen, die in der Regel eine Fragment.
In Android 9 können Sie Titel des Bereichs für Bedienungshilfen oder identifizierbare Titel für diese Bereiche. Hat ein Bereich einen Titel für Bedienungshilfen, Bedienungshilfen erhalten detailliertere Informationen, wenn sich das Fenster ändert. Mit dieser Funktion können Dienste dem Nutzer detailliertere Informationen zur Verfügung stellen. was sich in der Benutzeroberfläche geändert hat.
Um den Titel eines Fensters anzugeben, verwenden Sie die
android:accessibilityPaneTitle
. Sie können auch den Titel eines UI-Fensters aktualisieren, das unter
Laufzeit mit setAccessibilityPaneTitle()
.
Sie können beispielsweise einen Titel für den Inhaltsbereich einer
Fragment
-Objekt.
Überschriftenbasierte Navigation
Wenn Ihre App Textinhalte anzeigt, die logische Überschriften enthalten, legen Sie die Methode
android:accessibilityHeading
true
für die Instanzen von
View
, die diese Überschriften darstellen. Von
wenn Sie diese Überschriften hinzufügen, ermöglichen Sie
Bedienungshilfen, Nutzenden bei der Navigation
von einer Überschrift zur nächsten wechseln. Diese Option kann von allen Bedienungshilfen verwendet werden.
die Fähigkeit zur Verbesserung der UI-Navigation
Gruppennavigation und -ausgabe
Screenreader verwenden traditionell die
Attribut android:focusable
für
wann sie ein
ViewGroup
oder eine Sammlung von
View
-Objekte als eine Einheit. Auf diese Weise
dass die Ansichten einen logischen Bezug zueinander hatten.
In Android 8.1 und niedriger müssen Sie jedes View
-Objekt innerhalb eines
ViewGroup
als nicht fokussierbar und ViewGroup
selbst als fokussierbar. Dieses
durch die Anordnung dazu geführt, dass einige Instanzen von View
so markiert wurden,
die Tastaturnavigation etwas umständlicher.
Ab Android 9 können Sie die
android:screenReaderFocusable
anstelle von android:focusable
ersetzen, wenn
Ein View
-Objekt fokussierbar zu machen, hat unerwünschte Folgen. Screenreader
Fokus auf alle Elemente legen, für die entweder android:screenReaderFocusable
festgelegt wurde
oder android:focusable
auf true
.
Praktische Aktionen
Android 9 bietet jetzt Unterstützung für bequeme Aktionen im Namen von Nutzern:
- Interaktion mit Kurzinfos
- Im Framework für Barrierefreiheit haben Sie jetzt Zugriff auf
Kurzinfos auf der Benutzeroberfläche einer App. Verwenden Sie
getTooltipText()
um den Text einer Kurzinfo zu lesen, und verwenden SieACTION_SHOW_TOOLTIP
undACTION_HIDE_TOOLTIP
um Instanzen vonView
anzuweisen, die Kurzinfos ausblenden. - Globale Aktionen hinzugefügt
- Android 9 unterstützt jetzt zwei weitere Geräteaktionen in der
AccessibilityService
. Dein Dienst kann Nutzern helfen, ihre Geräte zu sperren und Screenshots zu erstellen mithilfe derGLOBAL_ACTION_LOCK_SCREEN
undGLOBAL_ACTION_TAKE_SCREENSHOT
Aktionen.
Details zur Fensteränderung
Mit Android 9 ist es einfacher, Updates für App-Fenster zu verfolgen, wenn eine App
Zeichnet mehrere Fenster gleichzeitig neu. Wenn ein
TYPE_WINDOWS_CHANGED
Ereignis auftritt, verwenden Sie den
getWindowChanges()
API, um zu ermitteln, wie sich die Fenster geändert haben. Während eines Mehrfensterupdates wird jeder
generiert einen eigenen Satz von Ereignissen.
Die getSource()
gibt die Stammansicht des mit dem jeweiligen Ereignis verknüpften Fensters zurück.
Wenn für eine App die Titel des Bereichs für Bedienungshilfen
View
-Objekten hat, kann Ihr Dienst diese erkennen
wenn die Benutzeroberfläche der App aktualisiert wird. Wenn ein
TYPE_WINDOW_STATE_CHANGED
Ereignis auftritt, verwenden Sie die vom
getContentChangeTypes()
um zu ermitteln, wie sich das Fenster geändert hat. Das Framework kann beispielsweise
erkennen, wenn ein Bereich einen neuen Titel hat oder wenn ein Bereich verschwunden ist.
Ausrichtung
Um unbeabsichtigte Drehungen zu vermeiden, haben wir einen Modus hinzugefügt, der den aktuellen auch wenn sich die Geräteposition ändert. Nutzer können die Rotation auslösen manuell, indem Sie eine Taste in der Systemleiste drücken.
Die Auswirkungen auf die Kompatibilität von Apps sind in den meisten Fällen minimal. Wenn Ihre App weist ein benutzerdefiniertes Drehverhalten auf oder verwendet eine ungewöhnliche Bildschirmausrichtung sind Probleme aufgetreten, die vorher unbemerkt geblieben wären. Die Einstellung für die Nutzerrotation wurde immer auf Hochformat festgelegt. Wir empfehlen Ihnen, das Rotationsverhalten bei allen wichtigen Aktivitäten Ihrer App Stellen Sie sicher, dass alle Einstellungen für die Bildschirmausrichtung weiterhin die eine optimale Nutzererfahrung bieten.
Weitere Informationen finden Sie im zugehörigen Verhaltensbeispiel. Änderungen.
Text
Android 9 bietet folgende textbezogene Funktionen in der Plattform:
Vorausberechneter Text: der
PrecomputedText
Klasse verbessert sich die Leistung beim Text-Rendering, indem Sie die erforderlichen im Voraus zu informieren. Außerdem kann Ihre App das Textlayout nicht nutzen. im Hauptthread.Lupe: Die Klasse
Magnifier
ist eine Plattform-Widget, das ein Lupen-API bietet und so eine einheitliche Lupenfunktion in allen Apps nutzen.Smart Linkify: Android 9 verbessert die Klasse
TextClassifier
, die mithilfe von maschinellem Lernen Elemente im ausgewählten Text identifiziert und und Vorschläge machen. MitTextClassifier
kann Ihre App beispielsweise Folgendes erkennen: dass der Nutzer eine Telefonnummer ausgewählt hat. Ihre App könnte dann vorschlagen, kann der Nutzer diese Nummer verwenden. Die Funktionen vonTextClassifier
die Funktionalität der KlasseLinkify
ersetzen.Text-Layout: Verschiedene Methoden und Attribute erleichtern Ihnen das um Ihr UI-Design zu implementieren. Weitere Informationen finden Sie in der Referenzdokumentation zu
TextView
ART vorzeitige Konvertierung von DEX-Dateien
Auf Geräten mit Android 9 oder höher: (ART) optimiert die komprimierte Dalvik Executable-Datei durch den vorzeitigen Compiler DEX-Dateien zu formatieren, indem Sie die DEX-Dateien eines App-Pakets in ein kompakte Darstellung. Durch diese Änderung wird Ihre Anwendung schneller gestartet und verbraucht weniger Speicherplatz und RAM.
Diese Verbesserung kommt besonders Low-End-Geräten mit langsameren Laufwerks-E/A-Vorgängen zugute Geschwindigkeit.
System-Tracing auf dem Gerät
Mit Android 9 können Sie System-Traces von Ihrem Gerät aufzeichnen, und geben Sie einen Bericht zu diesen Aufzeichnungen an Ihr Entwicklungsteam weiter. Dieser Bericht unterstützt mehrere Formate, einschließlich HTML.
Durch die Erfassung dieser Traces können Sie Zeitdaten in Bezug auf die Prozesse und Threads ansehen und andere Arten global wichtiger Geräte abrufen Bundesländer.
Weitere Informationen zu diesem Tool finden Sie unter System auf dem Gerät ausführen Tracing