Funktionen und APIs unter Android 10

Android 10 bietet tolle Funktionen für Nutzer und Entwickler. In diesem Dokument wird beschrieben, was für Entwickler verfügbar ist.

Weitere Informationen zu den APIs finden Sie im API-Diff-Bericht oder in der Android API-Referenz. Suchen Sie nach APIs, die „in API-Level 29 hinzugefügt“ wurden. Lesen Sie sich auch die Informationen zu Verhaltensänderungen unter Android 10 (für Apps, die auf API-Level 29 ausgerichtet sind und für alle Apps) sowie zu Änderungen im Hinblick auf den Datenschutz durch, um zu erfahren, in welchen Bereichen sich Plattformänderungen auf Ihre Apps auswirken können.

Erhöhte Sicherheit

Android 10 bietet eine Reihe von Sicherheitsfunktionen, die in den folgenden Abschnitten zusammengefasst werden.

Verbesserte Dialogfelder für die biometrische Authentifizierung

Android 10 bietet die folgenden Verbesserungen bei der Unterstützung der biometrischen Authentifizierung:

  • Eine Prüfung der biometrischen Authentifizierungsfunktion.
  • Ein Fallback-Mechanismus, mit dem sich ein Nutzer mit seiner Geräte-PIN, seinem Muster oder seinem Passwort authentifizieren kann, wenn er sich nicht mit seiner biometrischen Eingabe authentifizieren kann.
  • Ein Hinweis, dass das System keine Nutzerbestätigung erfordert, nachdem sich der Nutzer mit einer impliziten biometrischen Modalität authentifiziert hat. Sie können dem System beispielsweise mitteilen, dass nach der Authentifizierung eines Nutzers mit der Gesichtserkennung keine weitere Bestätigung erforderlich sein soll.

Eingebetteten DEX-Code direkt aus dem APK ausführen

Ab Android 10 können Sie der Plattform mitteilen, eingebetteten DEX-Code direkt aus der APK-Datei Ihrer App auszuführen. Diese Option kann einen Angriff verhindern, wenn ein Angreifer es jemals geschafft hat, den lokal kompilierten Code auf dem Gerät zu manipulieren.

Weitere Informationen findest du unter Eingebetteten DEX-Code direkt aus einem APK ausführen.

TLS 1.3-Unterstützung

Android 10 unterstützt TLS 1.3. TLS 1.3 ist eine umfassende Überarbeitung des TLS-Standards, die Leistungsvorteile und eine verbesserte Sicherheit bietet. Unsere Benchmarks zeigen, dass mit TLS 1.3 sichere Verbindungen bis zu 40 % schneller hergestellt werden können als mit TLS 1.2.

Weitere Informationen zur Implementierung von TLS 1.3 finden Sie im Abschnitt zu TLS auf der Seite zu Verhaltensänderungen für alle Apps.

Öffentliche Conscrypt-API

Ab Android 10 enthält der Sicherheitsanbieter Conscrypt eine öffentliche API für TLS-Funktionen.

Die Sammlung von Klassen unter android.net.ssl enthält statische Methoden zum Zugriff auf Funktionen, die nicht über die generischen javax.net.ssl APIs verfügbar sind. Die Namen für diese Klassen können als Plural der entsprechenden javax.net.ssl-Klasse abgeleitet werden. Beispielsweise können für Code, der auf Instanzen von javax.net.ssl.SSLSocket ausgeführt wird, stattdessen Methoden von SSLSockets verwendet werden.

Konnektivitätsfunktionen

Android 10 enthält mehrere Verbesserungen im Hinblick auf Netzwerk- und Konnektivität.

Wi-Fi Network Connection API

Mit Android 10 wird die Unterstützung für Peer-to-Peer-Verbindungen hinzugefügt. Mit dieser Funktion kann Ihre App den Nutzer auffordern, den Zugangspunkt zu ändern, mit dem das Gerät verbunden ist. Verwenden Sie dazu WifiNetworkSpecifier, um Eigenschaften eines angeforderten Netzwerks zu beschreiben. Die Peer-to-Peer-Verbindung wird für nicht netzwerkbezogene Zwecke verwendet, z. B. für die Bootstrap-Konfiguration sekundärer Geräte wie Chromecast und Google Home-Hardware.

Weitere Informationen finden Sie unter Wi-Fi Network Request API für Peer-to-Peer-Verbindungen.

API für WLAN-Netzwerkvorschläge

Unter Android 10 können Sie Nutzer in Ihrer App auffordern, eine Verbindung zu einem WLAN-Zugangspunkt herzustellen. Sie können Vorschläge dazu machen, mit welchem Netzwerk eine Verbindung hergestellt werden soll. Die Plattform wählt letztendlich anhand der Eingaben Ihrer und anderer Apps aus, welcher Zugangspunkt akzeptiert wird.

Weitere Informationen zu dieser Funktion finden Sie unter WLAN-Empfehlungen.

Verbesserungen bei den WLAN-Modi mit hoher Leistung und niedriger Latenz

Mit Android 10 können Sie dem zugrunde liegenden Modem einen Hinweis geben, um die Latenz zu minimieren.

Android 10 erweitert die WLAN-Sperre API, um den Hochleistungsmodus und den Modus mit niedriger Latenz effektiv zu unterstützen. Der WLAN-Energiesparmodus ist für die hohe Leistung und den Modus mit niedriger Latenz deaktiviert. Je nach Modemunterstützung kann im Modus mit niedriger Latenz eine weitere Latenzoptimierung aktiviert werden.

Der Modus mit niedriger Latenz ist nur aktiviert, wenn die Anwendung, die die Sperre ergreift, im Vordergrund ausgeführt wird und das Display eingeschaltet ist. Der Modus mit geringer Latenz ist besonders hilfreich für Echtzeit-Gaming-Anwendungen auf Mobilgeräten.

Spezielle Suchanfragen im DNS-Resolver

Android 10 bietet native Unterstützung für spezielle DNS-Suchanfragen, sowohl mit Klartextabfragen als auch im DNS-over-TLS-Modus. Bisher unterstützte der DNS-Resolver der Plattform nur A- und AAAA-Einträge, mit denen nur die mit einem Namen verknüpften IP-Adressen abgerufen werden konnten. Andere Eintragstypen wurden nicht unterstützt. Die DnsResolver API bietet eine generische, asynchrone Auflösung, mit der Sie SRV-, NAPTR- und andere Datensatztypen abrufen können. Das Parsen der Antwort wird der App überlassen.

Informationen zu NDK-basierten Apps finden Sie unter android_res_nsend.

Wi‑Fi Easy Connect

Unter Android 10 können Sie mit Easy Connect WLAN-Anmeldedaten für ein Peer-Gerät bereitstellen, als Ersatz für das eingestellte WPS. Apps können Easy Connect in ihren Einrichtungs- und Bereitstellungsablauf einbinden, indem sie die ACTION_PROCESS_WIFI_EASY_CONNECT_URI-Intent verwenden.

Weitere Informationen zu dieser Funktion finden Sie unter Wi‑Fi Easy Connect.

Wi‑Fi Direct-Verbindungs-API

Die API-Klassen WifiP2pConfig und WifiP2pManager wurden in Android 10 aktualisiert, um Funktionen für den schnellen Verbindungsaufbau zu Wi-Fi Direct anhand vordefinierter Informationen zu unterstützen. Diese Informationen werden über einen Nebenkanal wie Bluetooth oder NFC weitergegeben.

Das folgende Codebeispiel zeigt, wie Sie eine Gruppe anhand vordefinierter Informationen erstellen:

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

Java

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

Wenn Sie einer Gruppe mit Anmeldedaten beitreten möchten, ersetzen Sie manager.createGroup() durch Folgendes:

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

Bluetooth LE-Verbindungsorientierte Kanäle (CoC)

Mit Android 10 kann Ihre App BLE-CoC-Verbindungen verwenden, um größere Datenstreams zwischen zwei BLE-Geräten zu übertragen. Diese Schnittstelle abstrahiert Bluetooth- und Verbindungsmechanismen, um die Implementierung zu vereinfachen.

Telefoniefunktionen

Android 10 enthält mehrere Verbesserungen im Zusammenhang mit der Telefonie.

Verbesserungen bei der Anrufqualität

Unter Android 10 können auf Geräten, die die Funktion unterstützen, Informationen zur Qualität laufender IMS-Anrufe (IP Multimedia Subsystem) erfasst werden, einschließlich der Qualität von und zum Netzwerk.

Anruf-Filter und Anrufer-ID

Mit Android 10 können Sie in Ihrer App Anrufe, die nicht im Adressbuch des Nutzers enthalten sind, als potenzielle Spamanrufe identifizieren und Spamanrufe im Namen des Nutzers stumm ablehnen lassen. Informationen zu diesen blockierten Anrufen werden in der Anrufliste als blockierte Anrufe protokolliert, um dem Nutzer mehr Transparenz zu bieten, wenn er verpasste Anrufe hat. Wenn Sie diese API verwenden, müssen Sie keine READ_CALL_LOG-Berechtigungen vom Nutzer einholen, um Anruffilter und Anruferidentität bereitzustellen.

API für den Anrufweiterleitungsdienst

Unter Android 10 wird die Verarbeitung von Anrufabsichten geändert. Die NEW_OUTGOING_CALL-Broadcasts werden eingestellt und durch die CallRedirectionService API ersetzt. Die CallRedirectionService API bietet Schnittstellen, mit denen Sie ausgehende Anrufe der Android-Plattform ändern können. So können Drittanbieter-Apps beispielsweise Anrufe abbrechen und über VoIP weiterleiten.

Verbesserungen beim Erstellen von Dateien auf externen Speichern

Neben dem begrenzten Speicher bietet Android 10 die folgenden Funktionen für den externen Speicher:

  • Mit dem Flag IS_PENDING können Sie Ihrer App exklusiven Zugriff auf eine Mediendatei gewähren, während sie auf die Festplatte geschrieben wird.
  • Wenn Sie einen bestimmten Speicherort für Dateien kennen, können Sie dem System einen Hinweis geben, wo die neu geschriebenen Dateien gespeichert werden sollen.
  • Jedes externe Speichergerät hat einen eindeutigen Volumenamen.

Medien und Grafiken

Android 10 bietet die folgenden neuen Medien- und Grafikfunktionen und ‑APIs:

Audioeingabe teilen

Mit Android 10 können zwei Apps die Audioeingabe gleichzeitig teilen. Weitere Informationen finden Sie unter Audioeingabe freigeben.

Audiowiedergabe erfassen

Mit Android 10 kann eine App die Audiowiedergabe anderer Apps aufzeichnen. Weitere Informationen finden Sie unter Wiedergabeaufzeichnung.

Suchleiste in MediaStyle-Benachrichtigungen

Ab Android 10 wird in MediaStyle-Benachrichtigungen eine Suchleiste angezeigt. Die Wiedergabeleiste zeigt den Wiedergabefortschritt ab PlaybackState.getPosition() an. In einigen Fällen kann mit der Wiedergabeleiste zu einer bestimmten Stelle im wiedergegebenen Programm gesprungen werden. Die Darstellung und das Verhalten der Suchleiste werden durch folgende Regeln gesteuert:

  • Die Schiebeleiste wird angezeigt, wenn MediaSession aktiv ist und seine Dauer (durch MediaMetadata.METADATA_KEY_DURATION angegeben) größer als null ist. Bei nicht bestimmbaren Streams wie Livestreams und Radiosendungen wird der Balken also nicht angezeigt.
  • Wenn die Sitzung ACTION_SEEK_TO implementiert, kann der Nutzer die Wiedergabeposition mit der Bildlaufleiste steuern.

Native MIDI API

Die Android Native MIDI API (AMidi) bietet Anwendungsentwicklern die Möglichkeit, MIDI-Daten mit C/C++ Code zu senden und zu empfangen. Dies ermöglicht eine engere Integration in die C/C++ Audio-/Steuerungslogik und minimiert den Bedarf an JNI.

Weitere Informationen finden Sie unter Android Native MIDI API.

Verbesserungen bei MediaCodecInfo

In Android 10 wurden Methoden zu MediaCodecInfo hinzugefügt, die weitere Informationen zu einem Codec liefern.

Weitere Informationen finden Sie unter Medienkods.

Thermal API

Wenn Geräte zu heiß werden, wird die CPU und/oder GPU möglicherweise gedrosselt. Dies kann sich auf unerwartete Weise auf Apps und Spiele auswirken. Bei Apps mit komplexen Grafiken, hoher Rechenleistung oder anhaltender Netzwerkaktivität treten häufiger Probleme auf. Diese können je nach Chipsatz- und Kernfrequenz, Integrationsebene sowie Geräteverpackung und Formfaktor variieren.

Unter Android 10 können Apps und Spiele eine thermische API verwenden, um Änderungen am Gerät zu überwachen und Maßnahmen zu ergreifen, um den Energieverbrauch zu senken und die normale Temperatur wiederherzustellen. Apps registrieren einen Listener in PowerManager, über den das System den aktuellen Überhitzungszustand von leicht und mittel bis schwer, kritisch, Notfall oder Herunterfahren meldet.

Wenn das Gerät eine Überhitzung meldet, können Apps und Spiele helfen, indem sie laufende Aktivitäten beenden, um den Energieverbrauch auf verschiedene Weise zu senken. So können Streaming-Apps beispielsweise die Auflösung, die Bitrate oder den Netzwerkverkehr reduzieren, eine Kamera-App den Blitz oder die intensive Bildverbesserung deaktivieren, ein Spiel die Framerate oder die Polygontessellierung verringern, eine Medien-App die Lautsprecherlautstärke reduzieren und eine Karten-App das GPS deaktivieren.

Für die Thermal API ist eine neue HAL-Ebene für das Gerät erforderlich. Sie wird derzeit auf Pixel-Geräten mit Android 10 unterstützt. Wir arbeiten mit unseren Geräteherstellern zusammen, um das System so schnell wie möglich umfassend unterstützen zu können.

Kamera und Bilder

Android 10 bietet die folgenden neuen kamera- und bildbezogenen Funktionen:

Unterstützung für Monochromkamera

Mit Android 9 (API-Ebene 28) wurden Schwarz-Weiß-Kameras eingeführt. In Android 10 wurde die Unterstützung für Monochromkameras weiter optimiert:

  • Unterstützung für das Y8-Streamformat zur Verbesserung der Arbeitsspeichereffizienz.
  • Unterstützung für die Aufnahme von monochromen DNG-Raw-Dateien.
  • Einführung von MONO- und NIR-CFA-Aufzählungen, um zwischen normalen Monochromkameras und Nahinfrarotkameras zu unterscheiden.

Mit dieser Funktion können Sie ein natives Schwarz-Weiß-Bild aufnehmen. Ein logisches Gerät mit mehreren Kameras kann eine monochrome Kamera als physische Unterkamera verwenden, um auch bei wenig Licht eine bessere Bildqualität zu erzielen.

Dynamisches Tiefenformat

Ab Android 10 können Kameras die Tiefendaten für ein Bild mithilfe eines neuen Schemas namens Dynamic Depth Format (DDF) in einer separaten Datei speichern. Apps können sowohl das JPG-Bild als auch die Tiefenmetadaten anfordern und diese Informationen verwenden, um in der Nachbearbeitung beliebige Unschärfen anzuwenden, ohne die ursprünglichen Bilddaten zu ändern.

Die Spezifikation für dieses Format finden Sie unter Dynamic Depth Format.

High Efficiency Image File Format

Das HEIF-Format (High Efficiency Image File) ist ein Standard-Bild- und Videoformat, das im Vergleich zu anderen Dateiformaten eine Codierung höherer Qualität und eine geringere Dateigröße bietet.

Weitere Informationen zum Dateiformat finden Sie unter HEIC.

Verbesserungen bei der Multi-Kamera-Funktion

In Android 10 wurde die Fusion mehrerer Kameras zu einer einzigen logischen Kamera verbessert. Diese Funktion wurde in Android 9 (API-Level 28) eingeführt. Der Camera2 API wurden folgende Funktionen hinzugefügt:

Accessibility Services API

In Android 10 werden die folgenden neuen Funktionen und APIs für Dienste zur Barrierefreiheit eingeführt:

Flag für den Zugangsschlüssel von AccessibilityNodeInfo

Ab Android 10 können Sie isTextEntryKey() aufrufen, um zu ermitteln, ob eine bestimmte AccessibilityNodeInfo eine Taste zur Texteingabe ist, die zu einer Tastatur oder einem Zahlenblock gehört.

Gesprochenes Feedback im Dialogfeld „Barrierefreiheit“

Wenn Nutzer die Bedienungshilfen-Verknüpfung verwenden müssen, um einen Bedienungshilfendienst zu starten, kann unter Android 10 der Dialog auf Wunsch des Dienstes von einer Sprachausgabe begleitet werden.

Bedienungshilfe-Tastenkombination bei aktivierter Touch-Navigation

Wenn die Funktion Bedienung per Geste in Android 10 aktiviert ist, ist die Schaltfläche für die Barrierefreiheit nicht sichtbar oder auswählbar. Um auf das Menü für Bedienungshilfen zuzugreifen, müssen Nutzer eine der folgenden Touch-Gesten ausführen:

  • Wischen Sie mit zwei Fingern nach oben.
  • Mit zwei Fingern nach oben wischen und halten.

Bedienungshilfen-Kurzbefehl für physische Tastaturen

Unter Android 10 können Nutzer die Tastenkombination Strg + Alt + Z auf einer physischen Tastatur drücken, um die Bedienungshilfen aufzurufen.

Verbesserung der Bildschirmtastatur

Unter Android 10 können Dienste zur Barrierefreiheit anfordern, dass die Bildschirmtastatur angezeigt wird, auch wenn das Gerät eine angeschlossene physische Tastatur erkennt. Nutzer können dieses Verhalten überschreiben.

Benutzerdefinierte Zeitlimits für Bedienungshilfen

Mit Android 10 wird die getRecommendedTimeoutMillis() API eingeführt. Diese Methode unterstützt benutzerdefinierte Zeitlimits für interaktive und nicht interaktive UI-Elemente. Der Rückgabewert wird sowohl von den Nutzereinstellungen als auch von APIs für Barrierefreiheitsdienste beeinflusst.

Verbesserungen bei Autofill

Android 10 enthält die folgenden Verbesserungen am Autofill-Dienst.

Kompatibilitätsbezogene Autofill-Anfragen

Mit dem Flag FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST können Sie feststellen, ob eine Autofill-Anfrage über den Kompatibilitätsmodus generiert wurde.

Nutzernamen und Passwort gleichzeitig speichern

Sie können Fälle unterstützen, in denen eine Anwendung mehrere Aktivitäten verwendet, um Nutzername, Passwort und andere Felder anzuzeigen. Verwenden Sie dazu das Flag SaveInfo.FLAG_DELAY_SAVE.

Nutzerinteraktion mit der Speicher-Benutzeroberfläche

Sie können ein Passwortfeld in einem Speicherdialogfeld ein- und ausblenden, indem Sie einen Aktions-Listener für das Dialogfeld festlegen und die Sichtbarkeit der entsprechenden Remote-Ansicht für das Passwort ändern.

Unterstützung für die Aktualisierung von Datasets

Autofill kann vorhandene Passwörter aktualisieren. Wenn ein Nutzer beispielsweise bereits ein Passwort gespeichert hat und ein neues Passwort speichert, wird er von Autofill aufgefordert, das vorhandene Passwort zu aktualisieren, anstatt ein neues zu speichern.

Verbesserungen bei der Feldklassifizierung

Android 10 enthält die folgenden Verbesserungen an der Field Classification API.

UserData.Builder-Konstruktor

Der Konstruktor von UserData.Builder wurde geändert, um besser an das Builder-Muster anzupassen.

Zuordnung eines Werts zu mehreren Typen von Kategorie-IDs zulassen

Wenn Sie UserData.Builder in Android 10 verwenden, können Sie einen Wert jetzt mehreren Typen von Kategorie-IDs zuordnen. In früheren Releases wurde eine Ausnahme ausgelöst, wenn ein Wert mehrmals hinzugefügt wurde.

Verbesserte Unterstützung von Kreditkartennummern

Bei der Feldklassifizierung können jetzt vierstellige Zahlen als die letzten vier Ziffern einer Kreditkartennummer erkannt werden.

Unterstützung für die anwendungsspezifische Feldklassifizierung

In Android 10 wurde FillResponse.setUserData() hinzugefügt. Damit können Sie app-spezifische Nutzerdaten für die Dauer der Sitzung festlegen. So kann der Autofill-Dienst Typen für Felder mit appspezifischen Inhalten erkennen.

Benutzeroberfläche und Systemsteuerung

Android 10 bietet folgende Verbesserungen der Benutzeroberfläche:

Unterstützung von JVMTI-PopFrame-Capping

In Android 10 wird die Funktion can_pop_frames in der JVMTI-Implementierung von Android unterstützt. Bei der Fehlerbehebung können Sie mit dieser Funktion Funktionen noch einmal ausführen, nachdem Sie an einem Haltepunkt angehalten und lokale oder globale Werte oder die Implementierung einer Funktion angepasst haben. Weitere Informationen findest du auf der Pop Frame-Referenzseite von Oracle.

Surface Control API

Android 10 bietet eine SurfaceControl API für den Low-Level-Zugriff auf den System-Compositor (SurfaceFlinger). Für die meisten Nutzer ist SurfaceView die richtige Methode, den Compositor zu nutzen. Die SurfaceControl API kann in bestimmten Fällen nützlich sein, z. B.:

  • Synchronisierung mehrerer Oberflächen
  • Prozessübergreifende Oberflächeneinbettung
  • Lebensdauerverwaltung auf niedrigerer Ebene

Die SurfaceControl API ist sowohl in SDK- als auch in NDK-Bindungen verfügbar. Die NDK-Implementierung enthält eine API für den manuellen Austausch von Puffern mit dem Compositor. Dies ist eine Alternative für Nutzer, die an die Grenzen von BufferQueue gestoßen sind.

Erkennung von hängen gebliebenen WebView-Renderern

In Android 10 wird die abstrakte Klasse WebViewRenderProcessClient eingeführt. Mit dieser können Apps erkennen, ob ein WebView nicht mehr reagiert. So verwenden Sie diese Klasse:

  1. Definieren Sie eine eigene Unterklasse und implementieren Sie die Methoden onRenderProcessResponsive() und onRenderProcessUnresponsive().
  2. Hängen Sie eine Instanz Ihres WebViewRenderProcessClient an ein oder mehrere WebView-Objekte an.
  3. Wenn die WebView nicht mehr reagiert, ruft das System die onRenderProcessUnresponsive()-Methode des Clients auf und übergibt die WebView und WebViewRenderProcess. Wenn WebView ein einzelner Prozess ist, ist der Parameter WebViewRenderProcess null. Ihre App kann entsprechende Maßnahmen ergreifen, z. B. dem Nutzer ein Dialogfeld anzeigen, in dem er gefragt wird, ob er den Renderingvorgang anhalten möchte.

Wenn WebView nicht reagiert, ruft das System onRenderProcessUnresponsive() regelmäßig (nicht öfter als einmal alle fünf Sekunden) auf, ergreift aber keine weiteren Maßnahmen. Wenn WebView wieder reagiert, ruft das System onRenderProcessResponsive() nur einmal auf.

Einstellungsbereiche

Mit Android 10 werden Einstellungen eingeführt, eine API, mit der Apps Nutzern Einstellungen im Kontext ihrer App anzeigen können. So müssen Nutzer nicht in die Einstellungen gehen, um beispielsweise NFC oder Mobilfunkdaten zu ändern, um die App verwenden zu können.

Abbildung 1. Der Nutzer versucht, eine Webseite zu öffnen, während das Gerät nicht mit dem Netzwerk verbunden ist. Chrome öffnet den Bereich mit den Internetverbindung-Einstellungen.

Abbildung 2. Der Nutzer kann das WLAN aktivieren und ein Netzwerk auswählen, ohne die Chrome App zu verlassen.

Angenommen, ein Nutzer öffnet einen Webbrowser, während sein Gerät im Flugmodus ist. Vor Android 10 konnte die App nur eine allgemeine Meldung anzeigen, in der der Nutzer aufgefordert wurde, die Einstellungen zu öffnen, um die Verbindung wiederherzustellen. Unter Android 10 kann die Browser-App ein Inline-Steuerfeld mit wichtigen Verbindungseinstellungen wie dem Flugmodus, WLAN (einschließlich Netzwerke in der Nähe) und mobilen Daten anzeigen. Über diesen Bereich können Nutzer die Verbindung wiederherstellen, ohne die App zu verlassen.

Wenn Sie einen Bereich mit Einstellungen anzeigen lassen möchten, lösen Sie eine Intent-Aktion mit einer der folgenden Settings.Panel-Aktionen aus:

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

Java

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type kann eines der folgenden sein:

ACTION_INTERNET_CONNECTIVITY
Hier werden Einstellungen zur Internetverbindung angezeigt, z. B. Flugmodus, WLAN und mobile Daten.
ACTION_WIFI
Zeigt die WLAN-Einstellungen an, aber nicht die anderen Verbindungseinstellungen. Das ist nützlich für Apps, die für große Uploads oder Downloads eine WLAN-Verbindung benötigen.
ACTION_NFC
Hier werden alle Einstellungen für die Nahfeldkommunikation (NFC)
angezeigt.
ACTION_VOLUME
Lautstärkeeinstellungen für alle Audiostreams.

Verbesserungen bei der Freigabe

Android 10 bietet eine Reihe von Verbesserungen bei der Freigabe:

Sharing Shortcuts API

Die Sharing Shortcuts API ersetzt die Direct Share APIs.

Anstatt Ergebnisse reaktiv bei Bedarf abzurufen, können Apps mit der Sharing Shortcuts API im Voraus direkte Freigabeziele veröffentlichen. So funktioniert der ShortcutManager. Da die beiden APIs ähnlich sind, haben wir die ShortcutInfo API erweitert, um die Verwendung beider Funktionen zu vereinfachen. Mit der Sharing Shortcuts API können Sie einem Freigabeziel direkt Kategorien oder Personen zuweisen. Die Freigabeziele bleiben im System, bis sie von derselben App aktualisiert oder die App deinstalliert wird.

Der ältere Mechanismus für die direkte Freigabe funktioniert weiterhin, aber Apps, die ihn verwenden, haben eine niedrigere Priorität als Apps, die die Sharing Shortcuts API verwenden.

ShortcutInfo.Builder bietet zusätzliche Methoden, um zusätzliche Informationen zum Zielvorhaben für die Anzahl der geteilten Inhalte bereitzustellen.

Direkte Freigabeziele

Sie können eine dynamische Verknüpfung als Ziel für die direkte Freigabe veröffentlichen. Weitere Informationen finden Sie unter Direkte Zielvorhaben für die Freigabe veröffentlichen.

ShortcutManagerCompat ist eine neue AndroidX API, die abwärtskompatibel mit der alten DirectShare API ist. Dies ist die bevorzugte Methode, um Freigabeziele zu veröffentlichen.

Textvorschau

Wenn eine App Textinhalte teilt, kann eine optionale Vorschau der Inhalte in der Sharesheet-Benutzeroberfläche angezeigt werden.

Weitere Informationen zum Hinzufügen von Vorschauen für Rich Text

Weitere Informationen

Weitere Informationen dazu, wie Apps Daten teilen können, finden Sie unter Einfache Daten an andere Apps senden und Einfache Daten von anderen Apps empfangen.

Dunkles Design

Android 10 bietet ein dunkles Design, das sowohl für die Android-Systembenutzeroberfläche als auch für Apps gilt, die auf dem Gerät ausgeführt werden. Ausführliche Informationen finden Sie unter Dunkles Design.

Arten von Diensten im Vordergrund

Mit Android 10 wird das XML-Manifestattribut foregroundServiceType eingeführt, das Sie in die Definition mehrerer bestimmter Dienste aufnehmen. Es ist möglich, aber nur selten sinnvoll, einem bestimmten Dienst mehrere Typen von Diensten im Vordergrund zuzuweisen.

In der folgenden Tabelle sind die verschiedenen Typen von Diensten im Vordergrund und die Dienste aufgeführt, für die ein bestimmter Typ deklariert werden sollte:

Typ des Diensts im Vordergrund Beispiel für einen Anwendungsfall für einen Dienst, für den dieser Typ deklariert werden sollte
connectedDevice Fitness-Tracker im Blick behalten
dataSync Dateien aus einem Netzwerk herunterladen
location Eine vom Nutzer initiierte Aktion fortsetzen
mediaPlayback Hörbuch, Podcast oder Musik abspielen
mediaProjection Ein Video vom Display des Geräts für kurze Zeit aufnehmen
phoneCall Aktiven Anruf verwalten

Kotlin

Android 10 enthält die folgenden Updates für die Kotlin-Entwicklung.

Anmerkungen zur Ignorierbarkeit für libcore APIs

Android 10 verbessert die Abdeckung von Annotationen zur Null-Zulässigkeit im SDK für Libcore-APIs. Mit diesen Anmerkungen können App-Entwickler, die in Android Studio entweder die Kotlin- oder die Java-Nullwertanalyse verwenden, Informationen zur Nullwertigkeit erhalten, wenn sie mit diesen APIs interagieren.

Normalerweise führen Verstöße gegen den Vertrag zur Nullbarkeit in Kotlin zu Kompilierungsfehlern. Um die Kompatibilität mit Ihrem vorhandenen Code zu gewährleisten, werden nur die Anmerkungen @RecentlyNullable und @RecentlyNonNull hinzugefügt. Dies bedeutet, dass Verstöße gegen die NULL-Zulässigkeit zu Warnungen anstelle von Fehlern führen.

Außerdem werden alle @RecentlyNullable- oder @RecentlyNonNull-Anmerkungen, die in Android 9 hinzugefügt wurden, in @Nullable bzw. @NonNull geändert. Das bedeutet, dass Verstöße gegen die Nullbarkeit in Android 10 und höher zu Fehlern statt zu Warnungen führen.

Weitere Informationen zu Änderungen an Anmerkungen finden Sie im Android Developers Blog unter Android Pie SDK ist jetzt Kotlin-freundlicher.

NDK

Android 10 enthält die folgenden NDK-Änderungen.

Verbesserte Fehlerbehebung bei der Eigentümerschaft von Dateideskriptoren

In Android 10 wird „fdsan“ hinzugefügt, mit dem Sie Probleme mit der Inhaberschaft von Dateideskriptoren leichter finden und beheben können.

Fehler im Zusammenhang mit der unsachgemäßen Handhabung des Dateideskriptor-Eigentümers, die sich in der Regel als Verwendung nach dem Schließen und Doppelschließen manifestieren, sind analog zu den Fehlern Verwendung nach der Freigabe und Doppelfreigabe bei der Speicherzuweisung, aber in der Regel viel schwieriger zu diagnostizieren und zu beheben. fdsan versucht, die Fehlverwaltung von Dateideskriptoren zu erkennen und/oder zu verhindern, indem die Inhaberschaft von Dateideskriptoren erzwungen wird.

Weitere Informationen zu Abstürzen im Zusammenhang mit diesen Problemen finden Sie unter Von fdsan erkannter Fehler. Weitere Informationen zu fdsan finden Sie auf der Googlesource-Seite zu fdsan.

ELF-TLS

Für Anwendungen, die mit dem NDK mit einer Mindest-API-Stufe 29 erstellt wurden, kann anstelle von emutls ELF TLS verwendet werden. Für diese Methode zur Verarbeitung threadlokaler Variablen wurde die Unterstützung für dynamische und statische Linker hinzugefügt.

Für Apps, die für API-Level 28 oder niedriger entwickelt wurden, wurden Verbesserungen für libgcc/compiler-rt implementiert, um einige emutls-Probleme zu beheben.

Weitere Informationen findest du unter Android-Änderungen für NDK-Entwickler.

Laufzeit

In Android 10 wurde die folgende Laufzeitänderung eingeführt.

Auslösen der automatischen Speicherbereinigung basierend auf Mallinfo

Wenn kleine Java-Objekte der Plattform auf riesige Objekte im C++-Heap verweisen, können die C++-Objekte oft erst wiederverwendet werden, wenn das Java-Objekt erfasst und beispielsweise finalisiert wurde. In früheren Releases hat die Plattform die Größe vieler C++-Objekte geschätzt, die mit Java-Objekten verknüpft sind. Diese Schätzung war nicht immer genau und führte gelegentlich zu einer stark erhöhten Speichernutzung, da die Plattform die Garbage Collection nicht wie vorgesehen durchführte.

In Android 10 überwacht der Garbage Collector (GC) die Gesamtgröße des vom System malloc() zugewiesenen Heaps. So wird sichergestellt, dass große malloc()-Zuweisungen immer in den Berechnungen berücksichtigt werden, die den GC auslösen. Bei Apps, in denen eine große Anzahl von C++-Zuweisungen mit der Java-Ausführung verschachtelt ist, kann die Häufigkeit der Garbage Collection steigen. Bei anderen Apps kann es zu einem leichten Rückgang kommen.

Testen und Fehlerbehebung

Android 10 enthält die folgenden Verbesserungen für das Testen und Entwickeln:

Verbesserungen bei der Systemverfolgung auf dem Gerät

Ab Android 10 können Sie Limits für die Größe und Dauer eines Trace angeben, wenn Sie einen System-Trace auf dem Gerät ausführen. Wenn Sie einen dieser Werte angeben, führt das System einen langen Trace aus und kopiert den Trace-Puffer während der Aufzeichnung regelmäßig in die Zieldatei. Die Aufzeichnung wird beendet, wenn die von Ihnen angegebenen Größen- oder Zeitlimits erreicht werden.

Mit diesen zusätzlichen Parametern können Sie andere Anwendungsfälle testen als mit einem Standard-Trace. Angenommen, Sie möchten einen Leistungsfehler diagnostizieren, der erst auftritt, wenn Ihre App schon seit einiger Zeit ausgeführt wird. In diesem Fall können Sie einen langen Trace über einen ganzen Tag aufzeichnen und dann den CPU-Scheduler, die Laufwerksaktivität, die App-Threads und andere Daten im Bericht analysieren, um die Ursache des Bugs zu ermitteln.

Unter Android 10 und höher werden Trace-Dateien in einem Format gespeichert, das mit Perfetto geöffnet werden kann, einem Open-Source-Projekt für die Leistungsinstrumentierung und -analyse. Sie können Perfetto-Trace-Dateien in das Systrace-Format konvertieren.

Verbesserungen am TextClassifier

Android 10 bietet zusätzliche Funktionen zur Textklassifizierung auf der Benutzeroberfläche TextClassifier.

Spracherkennung

Die Methode detectLanguage() funktioniert ähnlich wie bereits vorhandene Klassifizierungsmethoden. Sie empfängt ein TextLanguage.Request-Objekt und gibt ein TextLanguage-Objekt zurück.

TextLanguage-Objekte bestehen aus einer Liste von geordneten Paaren. Jedes Paar enthält ein Gebietsschema und einen entsprechenden Konfidenzwert für die Klassifizierung.

Vorgeschlagene Aktionen für Unterhaltungen

Die Methode suggestConversationActions() funktioniert ähnlich wie vorhandene Klassifizierungsmethoden. Sie empfängt ein ConversationActions.Request-Objekt und gibt ein ConversationActions-Objekt zurück.

ConversationActions-Objekte bestehen aus einer Liste von ConversationAction-Objekten. Jedes ConversationAction-Objekt enthält eine potenzielle vorgeschlagene Aktion und ihren Konfidenzwert.

Intelligente Antworten/Aktionen in Benachrichtigungen

Mit Android 9 können Antwortvorschläge in einer Benachrichtigung angezeigt werden. Android 10 erweitert dies um die Möglichkeit, Vorschläge für absichtsbasierte Aktionen hinzuzufügen. Darüber hinaus generiert die Plattform diese Vorschläge automatisch. Apps können weiterhin eigene Vorschläge machen oder die systemgenerierten Vorschläge deaktivieren.

Die API, die zum Generieren dieser Antworten verwendet wird, ist Teil von TextClassifier und war auch direkt Entwicklern in Android 10 zugänglich. Weitere Informationen finden Sie im Abschnitt Verbesserungen am TextClassifier.

Wenn Ihre App eigene Vorschläge bereitstellt, generiert die Plattform keine automatischen Vorschläge. Wenn Sie nicht möchten, dass in den Benachrichtigungen Ihrer App vorgeschlagene Antworten oder Aktionen angezeigt werden, können Sie systemgenerierte Antworten und Aktionen deaktivieren. Verwenden Sie dazu setAllowGeneratedReplies() und setAllowSystemGeneratedContextualActions().