Android 9-Funktionen und -APIs

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

Die neuen RTT APIs unterstützen die Positionierung von Innenbereichen in Ihren Apps.

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

Bildschirm mit Entwickleroptionen, auf dem verschiedene Aussparungsgrößen zu sehen sind

Display-Aussparung mit Emulator testen

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:

Du kannst eine Bildschirmaussparung auf jedem Gerät oder Emulator mit Android 9 simulieren wie folgt:

  1. Aktivieren Sie die Entwickleroptionen.
  2. Scrollen Sie auf dem Bildschirm Entwickleroptionen nach unten zum Abschnitt Zeichnung. und wählen Sie Display mit Aussparung simulieren aus.
  3. 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.

Messaging-Benachrichtigungen

MessagingStyle mit angehängtem Foto.

Messaging-Benachrichtigung

MessagingStyle mit Antworten und Unterhaltungen

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 die Person-Klasse anstelle einer CharSequence. Klasse Person 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 ein Person 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“:

  • Für NotificationManager.Policy gibt es außerdem sieben neue „Bitte nicht stören“-Konstanten kann verwendet werden, um visuelle Unterbrechungen zu unterdrücken:

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 an setTargetSampleSize()
  • Um ein Bild zuzuschneiden, das innerhalb des Bereichs des skalierten Bildes liegt, rufen Sie setCrop()
  • Um eine änderbare Bitmap zu erstellen, übergeben Sie true in setMutableRequired()

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:

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:

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 Sie ACTION_SHOW_TOOLTIP und ACTION_HIDE_TOOLTIP um Instanzen von View 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 der GLOBAL_ACTION_LOCK_SCREEN und GLOBAL_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.

Rotierendes Smartphone mit neuem Rotationsmodus, mit dem Nutzer die Rotation manuell auslösen können

Mit einem neuen Rotationsmodus können Nutzer die Rotation manuell über eine Schaltfläche in der Systemleiste auslösen.

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. Mit TextClassifier 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 von TextClassifier die Funktionalität der Klasse Linkify 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