Android 10-Funktionen und -APIs

Android 10 bietet tolle Funktionen für Nutzer und Entwickler. In diesem Dokument werden die Funktionen für Entwickler beschrieben.

Weitere Informationen zu den APIs finden Sie im Bericht zu den API-Unterschieden oder in der Android API-Referenz. Suchen Sie nach APIs, die mit API-Ebene 29 hinzugefügt wurden. Informieren Sie sich auch über die Änderungen des Android 10-Verhaltens (für Apps auf API-Level 29 und für alle Apps) sowie über Änderungen am Datenschutz, 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 folgende Verbesserungen für die biometrische 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, der das System anweist, keine Bestätigung des Nutzers anzufordern, nachdem sich der Nutzer mit einer impliziten biometrischen Modalität authentifiziert hat. Sie können dem System beispielsweise mitteilen, dass nach der Authentifizierung per Gesichtserkennung keine weitere Bestätigung erforderlich ist.

Eingebetteten DEX-Code direkt vom APK ausführen

Ab Android 10 kannst du die Plattform anweisen, eingebetteten DEX-Code direkt über die APK-Datei deiner 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 vom APK ausführen.

Unterstützung für TLS 1.3

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

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

Öffentliche Conscrypt-API

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

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

Konnektivitätsfunktionen

Android 10 enthält mehrere Verbesserungen im Zusammenhang mit Netzwerken und Konnektivität.

Wi-Fi network connection API

Android 10 unterstützt jetzt Peer-to-Peer-Verbindungen. Mit dieser Funktion kann Ihre App den Nutzer auffordern, den Zugangspunkt zu ändern, mit dem das Gerät verbunden ist. Dazu wird WifiNetworkSpecifier zum Beschreiben der Eigenschaften eines angeforderten Netzwerks verwendet. Die Peer-to-Peer-Verbindung wird nicht zur Bereitstellung des Netzwerks verwendet, z. B. für die Bootstrapping-Konfiguration für sekundäre Geräte wie Chromecast und Google Home-Hardware.

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

Wi-Fi network Suggest API

Unter Android 10 wird deine App unterstützt, um den Nutzer aufzufordern, eine Verbindung zu einem WLAN-Zugangspunkt herzustellen. Sie können Vorschläge für das Netzwerk machen, zu dem eine Verbindung hergestellt werden soll. Die Plattform wählt anhand der Eingaben aus Ihrer und anderen Apps letztendlich aus, welcher Zugangspunkt akzeptiert wird.

Weitere Informationen zu dieser Funktion finden Sie unter Wi-Fi Suggest.

Verbesserungen der WLAN-Modi für hohe Leistung und niedrige Latenz

Unter Android 10 kannst du dem zugrunde liegenden Modem einen Hinweis geben, um die Latenz zu minimieren.

Android 10 erweitert die Wi-Fi Lock 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 wird nur aktiviert, wenn die Anwendung, die die Sperre aktiviert hat, im Vordergrund ausgeführt wird und der Bildschirm eingeschaltet ist. Der Modus mit niedriger Latenz ist besonders hilfreich bei Echtzeit-Gaming-Anwendungen für Mobilgeräte.

Spezialisierte Lookups im DNS-Resolver

Android 10 bietet native Unterstützung für spezielle DNS-Lookups mit Klartextsuchen und 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 jedoch nicht unterstützt. Die DnsResolver API bietet eine generische, asynchrone Auflösung, mit der Sie SRV, NAPTR und andere Datensatztypen nachschlagen können. Beachten Sie, dass das Parsen der Antwort der Anwendung überlassen bleibt.

Informationen zu NDK-basierten Anwendungen finden Sie unter android_res_nsend.

Wi-Fi Easy Connect

Mit Android 10 können Sie Easy Connect verwenden, um WLAN-Anmeldedaten auf einem Peer-Gerät bereitzustellen, und das als Ersatz für WPS, das eingestellt wurde. Anwendungen können Easy Connect mithilfe des Intents ACTION_PROCESS_WIFI_EASY_CONNECT_URI in ihren Einrichtungs- und Bereitstellungsablauf einbinden.

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

Wi-Fi Direct Connection 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 Seitenkanal wie Bluetooth oder NFC geteilt.

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 einige Verbesserungen im Zusammenhang mit der Telefonie.

Verbesserte Anrufqualität

Android 10 bietet die Möglichkeit, auf Geräten, die diese Funktion unterstützen, Informationen zur Qualität laufender IP-Multimedia Subsystem-Aufrufe (IMS) zu erfassen, einschließlich der Qualität zum und vom Netzwerk.

Anruf-Filter und Anrufer-ID

Android 10 bietet Ihrer App eine Möglichkeit, Anrufe, die nicht im Adressbuch des Nutzers enthalten sind, als potenzielle Spamanrufe zu erkennen und Spamanrufe im Namen des Nutzers unbemerkt zurückweisen zu lassen. Informationen zu diesen blockierten Anrufen werden in der Anrufliste als blockierte Anrufe protokolliert, um für den Nutzer transparenter zu sein, wenn Anrufe fehlen. Wenn diese API verwendet wird, muss der Nutzer keine READ_CALL_LOG-Berechtigungen einholen, um Anruf-Filter- und Anrufer-ID-Funktionen bereitzustellen.

API für den Dienst zur Anrufweiterleitung

Android 10 ändert die Verarbeitung von Anruf-Intents. Der NEW_OUTGOING_CALL-Broadcast wurde verworfen und durch die CallRedirectionService API ersetzt. Die CallRedirectionService API bietet Schnittstellen, mit denen Sie ausgehende Anrufe von der Android-Plattform ändern können. Drittanbieter-Apps können beispielsweise Anrufe abbrechen und über VoIP umleiten.

Verbesserungen beim Erstellen von Dateien im externen Speicher

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

  • Mit dem Flag IS_PENDING können Sie Ihrer Anwendung exklusiven Zugriff auf eine Mediendatei gewähren, während diese auf das Laufwerk geschrieben wird.
  • Wenn Sie einen bestimmten Speicherort kennen, an dem Dateien gespeichert werden sollten, können Sie dem System einen Hinweis zum Speicherort der neu geschriebenen Dateien bereitstellen.
  • Jedes externe Speichergerät hat einen eindeutigen Volume-Namen.

Medien und Grafiken

Mit Android 10 werden die folgenden neuen Medien- und Grafikfunktionen und APIs eingeführt:

Audioeingabe wird geteilt

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

Aufnahme der Audiowiedergabe

Mit Android 10 kann eine App die Audiowiedergabe aus anderen Apps aufnehmen. Weitere Informationen finden Sie unter Wiedergabeaufnahme.

Suchleiste in MediaStyle-Benachrichtigungen

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

  • Die Suchleiste wird angezeigt, wenn eine aktive MediaSession vorhanden ist und ihre Dauer (durch MediaMetadata.METADATA_KEY_DURATION angegeben) größer als null ist. Das bedeutet, dass die Leiste nicht für unbestimmte Streams wie Livestreams und Radioübertragungen angezeigt wird.
  • Wenn in der Sitzung ACTION_SEEK_TO implementiert wird, kann der Nutzer die Suchleiste ziehen, um den Wiedergabeort zu 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, wodurch eine engere Integration in die C/C++ Audio-/Steuerlogik erfolgt und der Bedarf an JNI minimiert wird.

Weitere Informationen finden Sie unter Android Native MIDI API.

Verbesserungen bei MediaCodecInfo

Unter Android 10 werden MediaCodecInfo Methoden hinzugefügt, mit denen weitere Informationen zu einem Codec abgerufen werden können.

Weitere Informationen finden Sie unter Medien-Codecs.

Thermal API

Wenn Geräte zu warm werden, können sie CPU und/oder GPU drosseln, was sich unerwartet auf Apps und Spiele auswirken kann. Bei Apps mit komplexen Grafiken, hohem Rechenaufwand oder dauerhafter Netzwerkaktivität besteht die Wahrscheinlichkeit, dass Probleme auftreten. Diese können je nach Chipsatz und Kernfrequenzen, Integrationsgrad, Geräteverpackung und Formfaktor variieren.

In Android 10 können Apps und Spiele eine Thermo-API verwenden, um Änderungen am Gerät zu überwachen und Maßnahmen zu ergreifen, um einen geringeren Energieverbrauch zu erreichen 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 einen thermischen Stress meldet, können Apps und Spiele helfen, indem laufende Aktivitäten unterbrochen werden, um den Stromverbrauch auf verschiedene Weise zu reduzieren. Streaming-Apps können beispielsweise die Auflösung/Bitrate oder den Netzwerktraffic reduzieren, eine Kamera-App könnte Flash oder intensive Bildoptimierung deaktivieren, ein Spiel könnte die Framerate oder Polygon-Tesselation reduzieren, eine Medien-App könnte die Sprecherlautstärke reduzieren und eine Karten-App könnte 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

Mit Android 10 werden die folgenden neuen kamera- und bildbezogenen Funktionen eingeführt:

Unterstützung für monochrome Kamera

Mit Android 9 (API-Level 28) wurde erstmals die monochrome Kamerafunktion eingeführt. Unter Android 10 wurden einige Verbesserungen an der Unterstützung von monochromen Kameras hinzugefügt:

  • Unterstützung des Y8-Streamformats zur Verbesserung der Arbeitsspeichereffizienz.
  • Unterstützung für DNG-Rohdatenaufnahmen.
  • Einführung von MONO- und NIR-CFA-Aufzählungen, um zwischen normalen monochromen Kameras und Nahinfrarotkameras zu unterscheiden

Sie können diese Funktion verwenden, um ein natives monochromes Bild aufzunehmen. 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. Anwendungen können sowohl das JPG-Bild als auch dessen Tiefenmetadaten anfordern und anhand dieser Informationen bei der Nachbearbeitung eine Unkenntlichmachung vornehmen, ohne die ursprünglichen Bilddaten zu ändern.

Die Spezifikation für dieses Format finden Sie unter Dynamisches Tiefenformat.

Bilddateiformat mit hoher Effizienz

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 kleinere Dateigröße bietet.

Weitere Informationen zum Dateiformat finden Sie unter HEIC.

Verbesserungen bei mehreren Kameras

Android 10 verbessert die Zusammenführung mehrerer Kameras zu einer einzigen logischen Kamera. Diese Funktion wurde mit Android 9 (API-Level 28) eingeführt. Der Camera2 API wurde Folgendes hinzugefügt:

Accessibility Services API

Mit Android 10 werden die folgenden neuen Funktionen und APIs für Bedienungshilfen eingeführt:

Flag für Eingabeschlüssel von AccessibilityNodeInfo

Ab Android 10 kannst du isTextEntryKey() aufrufen, um festzustellen, ob eine bestimmte AccessibilityNodeInfo eine Texteingabetaste ist, die Teil einer Tastatur oder eines Tastenfelds ist.

Dialogfeld für Bedienungshilfen – gesprochenes Feedback

Wenn Nutzer eine Verknüpfung für Bedienungshilfen ausführen müssen, um eine Bedienungshilfe zu starten, können Nutzer in Android 10 eine Sprachausgabe-Aufforderung im Dialogfeld verwenden, wenn der Dienst dies anfordert.

Kurzbefehl für Bedienungshilfen, wenn die Bedienung über Gesten aktiviert ist

Wenn die Funktion Bedienung über Gesten in Android 10 aktiviert ist, ist die Schaltfläche „Bedienungshilfen“ weder sichtbar noch auswählbar. Um auf das Menü der Bedienungshilfen zuzugreifen, müssen Nutzer eine der folgenden Touch-Gesten ausführen:

  • Mit zwei Fingern nach oben wischen.
  • Mit zwei Fingern nach oben wischen und halten.

Tastenkombination für Bedienungshilfen für physische Tastaturen

In Android 10 können Nutzer die Tastenkombination für Bedienungshilfen auf einer physischen Tastatur durch Drücken von Strg + Alt + Z auslösen.

Verbesserter Soft-Keyboard-Controller

Unter Android 10 können Bedienungshilfen anfordern, dass die Softtastatur auch dann angezeigt wird, wenn das Gerät eine angeschlossene feste 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 den Bedienungshilfen-APIs 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.

Nutzername 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 Benutzeroberfläche zum Speichern

Sie können ein Passwortfeld in einem Dialogfeld zum Speichern ein- und ausblenden, indem Sie einen Aktions-Listener für das Dialogfeld festlegen und die Sichtbarkeit der entsprechenden Remote-Ansicht des Passworts ä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 UserData.Builder wurde geändert, um besser an das Muster Builder 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 mehr als einmal hinzugefügt wurde.

Verbesserte Unterstützung für Kreditkartennummern

Bei der Feldklassifizierung werden jetzt vierstellige Zahlen als letzte vier Ziffern einer Kreditkartennummer erkannt.

Unterstützung für die anwendungsspezifische Feldklassifizierung

Unter Android 10 wird FillResponse.setUserData() hinzugefügt. Damit kannst du appspezifische Nutzerdaten für die Dauer der Sitzung festlegen. So kann der Autofill-Dienst leichter Typen für Felder mit App-spezifischen Inhalten erkennen.

UI und Systemsteuerung

Android 10 bietet folgende Verbesserungen an der Benutzeroberfläche:

Unterstützung von JVMTI-PopFrame-Capping

Android 10 unterstützt die can_pop_frames-Funktion in der Android JVMTI-Implementierung. 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-Kompositor (SurfaceFlinger). Für die meisten Nutzer ist SurfaceView die richtige Methode zur Nutzung des Compositors. Die SurfaceControl API kann in bestimmten Fällen nützlich sein, z. B.:

  • Synchronisierung mehrerer Oberflächen
  • Prozessübergreifende Oberflächeneinbettung
  • Untergeordnete Lifetime-Verwaltung

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 bietet eine Alternative für Nutzer, die die Einschränkungen von BufferQueue bereits ausgeschöpft haben.

Erkennung eines hängenden Renderers durch WebView

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

  1. Definieren Sie Ihre eigene abgeleitete Klasse und implementieren Sie die Methoden onRenderProcessResponsive() und onRenderProcessUnresponsive().
  2. Hängen Sie eine Instanz von WebViewRenderProcessClient an ein oder mehrere WebView-Objekte an.
  3. Wenn WebView nicht mehr reagiert, ruft das System die onRenderProcessUnresponsive()-Methode des Clients auf und übergibt WebView und WebViewRenderProcess. Wenn es sich bei WebView um einen einzelnen Prozess handelt, ist der Parameter WebViewRenderProcess null. Ihre App kann geeignete Aktionen ausführen, wie z. B. die Anzeige eines Dialogfelds für den Nutzer, in dem er gefragt wird, ob er den Renderingprozess anhalten möchte.

Wenn WebView weiterhin nicht reagiert, ruft das System regelmäßig onRenderProcessUnresponsive() auf (maximal einmal alle fünf Sekunden), führt jedoch keine weiteren Aktionen aus. Wenn WebView wieder reagiert, ruft das System onRenderProcessResponsive() nur einmal auf.

Einstellungsbereiche

Mit Android 10 werden Settings Panels eingeführt, eine API, mit der Apps Nutzern Einstellungen im Kontext ihrer App anzeigen können. Nutzer müssen dann nicht mehr die Einstellungen aufrufen, um Einstellungen wie NFC oder Mobile Daten 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 WLAN aktivieren und ein Netzwerk auswählen, ohne die Chrome App zu verlassen.

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

Zum Aufrufen eines Steuerfelds für Einstellungen lösen Sie einen Intent 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 einer der folgenden Werte 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. Dies ist nützlich bei Anwendungen, die eine WLAN-Verbindung benötigen, um große Uploads oder Downloads durchzuführen.
ACTION_NFC
Zeigt alle Einstellungen für die Nahfeldkommunikation (NFC) an.
ACTION_VOLUME
Hiermit werden die Lautstärkeeinstellungen für alle Audiostreams angezeigt.

Verbesserungen beim Teilen

Android 10 bietet eine Reihe von Verbesserungen beim Teilen:

Freigabe 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 sich die beiden APIs ähneln, haben wir die ShortcutInfo API erweitert, um die Verwendung beider Features zu vereinfachen. Mit der Sharing Shortcuts API können Sie einem Freigabeziel direkt Kategorien oder Personen zuweisen. Die Freigabeziele bleiben im System bestehen, bis sie von derselben App aktualisiert oder deinstalliert wird.

Der ältere Direct Share-Mechanismus funktioniert zwar weiterhin, aber Apps, die ihn verwenden, haben eine niedrigere Priorität als Apps, die die Sharing Shortcuts API verwenden.

ShortcutInfo.Builder fügt Methoden hinzu und verbessert sie, um zusätzliche Informationen zum Freigabeziel bereitzustellen.

Direkte Freigabeziele

Sie können eine dynamische Verknüpfung als Direct Share Target veröffentlichen. Weitere Informationen finden Sie unter Direkte Freigabeziele veröffentlichen.

ShortcutManagerCompat ist eine neue AndroidX-API, die Abwärtskompatibilität mit der alten DirectShare API bietet. Dies ist die bevorzugte Methode, um Freigabeziele zu veröffentlichen.

Textvorschau

Wenn eine App Textinhalte freigibt, kann auf der Sharesheet-Benutzeroberfläche eine optionale Vorschau angezeigt werden.

Weitere Informationen finden Sie unter Rich-Text-Vorschauen hinzufügen.

Weitere Informationen

Weitere Informationen zum Teilen von Daten durch Apps 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-System-UI als auch für Apps auf dem Gerät verwendet wird. Weitere Informationen finden Sie unter Dunkles Design.

Diensttypen im Vordergrund

In Android 10 wird das XML-Manifest-Attribut 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, bei denen ein bestimmter Typ deklariert werden kann:

Diensttyp im Vordergrund Beispielanwendungsfall für einen Dienst, der diesen Typ deklarieren sollte
connectedDevice Tragbare Fitness-Tracker im Blick behalten
dataSync Dateien aus einem Netzwerk herunterladen
location Vom Nutzer initiierte Aktion fortsetzen
mediaPlayback Hörbücher, Podcasts oder Musik abspielen
mediaProjection Ein Video vom Display des Geräts für kurze Zeit aufnehmen
phoneCall Aktuellen Telefonanruf bearbeiten

Kotlin

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

Annotationen zur Null-Zulässigkeit für Libcore-APIs

Android 10 verbessert die Abdeckung von Annotationen zur Null-Zulässigkeit im SDK für Libcore-APIs. Mithilfe dieser Annotationen können App-Entwickler, die entweder die Kotlin- oder Java-Analyse zur Null-Zulässigkeit in Android Studio verwenden, bei der Interaktion mit diesen APIs Informationen zu Nullwerten abrufen.

Normalerweise führen Verstöße in Bezug auf die Null-Zulässigkeit in Kotlin zu Kompilierungsfehlern. Um die Kompatibilität mit Ihrem vorhandenen Code zu gewährleisten, werden nur die Annotationen @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-Annotationen, die in Android 9 hinzugefügt wurden, in @Nullable bzw. @NonNull geändert. Das bedeutet, dass Verstöße gegen die Null-Zulässigkeit unter Android 10 und höher zu Fehlern anstelle von Warnungen führen.

Weitere Informationen zu Änderungen an Annotationen finden Sie im Blog für Android-Entwickler unter Das Android Pie SDK ist jetzt besser für Kotlin geeignet.

Logo: NDK

Android 10 umfasst die folgenden NDK-Änderungen.

Verbesserte Fehlerbehebung für die Inhaberschaft 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 falschen Verarbeitung der Inhaberschaft von Dateideskriptoren, die sich in der Regel als use-after-close und double-close äußern, sind analog zu den Fehlern der Arbeitsspeicherzuweisung use-after-free und double-free, die jedoch oft schwieriger zu diagnostizieren und zu beheben sind. fdsan versucht, eine falsche Verwaltung von Dateideskriptoren durch Erzwingen von Dateideskriptoren zu erkennen und/oder zu verhindern.

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 Google-Quellseite zu fdsan.

ELF-TLS

Anwendungen, die mit dem NDK mit mindestens API-Level 29 erstellt wurden, können ELF TLS anstelle von emutls verwenden. Dynamische und statische Verknüpfungen wurden hinzugefügt, um diese Methode zur Verarbeitung lokaler Variablen vom Typ „Thread“ zu unterstützen.

Bei Anwendungen, die für API-Level 28 und niedriger entwickelt wurden, wurden Verbesserungen für libgcc/compiler-rt implementiert, um einige emutls-Probleme zu umgehen.

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

Laufzeit

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

Auslösung der automatischen Speicherbereinigung auf Mallinfo-Basis

Wenn kleine Java-Plattformobjekte im C++-Heap auf riesige Objekte verweisen, können die C++-Objekte oft nur dann zurückgefordert werden, wenn das Java-Objekt erfasst und beispielsweise abgeschlossen wird. In früheren Versionen hat die Plattform die Größe vieler C++-Objekte geschätzt, die mit Java-Objekten verbunden sind. Diese Schätzung war nicht immer genau und führte gelegentlich zu einer stark erhöhten Arbeitsspeichernutzung, da die Plattform die Speicherbereinigung nicht wie gewünscht durchführen konnte.

In Android 10 verfolgt die automatische Speicherbereinigung (GC) die Gesamtgröße des Heaps, der vom System malloc() zugewiesen wurde, und sorgt dafür, dass große malloc()-Zuweisungen immer in GC-auslösenden Berechnungen enthalten sind. Bei Anwendungen, die eine große Anzahl von C++-Zuweisungen mit Java-Ausführungen verschränken, kann dies zu einem Anstieg der Häufigkeit der automatischen Speicherbereinigung führen. Bei anderen Apps kann es einen leichten Rückgang geben.

Tests und Fehlerbehebung

Android 10 enthält die folgenden Verbesserungen für Tests und Fehlerbehebungen.

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 der beiden Werte angeben, führt das System einen langen Trace aus und kopiert den Trace-Zwischenspeicher regelmäßig in die Zieldatei, während der Trace aufgezeichnet wird. Der Trace wird abgeschlossen, wenn die von Ihnen angegebenen Limits für die Größe oder Dauer erreicht sind.

Verwenden Sie diese zusätzlichen Parameter, um andere Anwendungsfälle zu testen als mit einem Standard-Trace. Sie können beispielsweise einen Leistungsfehler diagnostizieren, der erst dann auftritt, wenn Ihre App über einen längeren Zeitraum gelaufen ist. In diesem Fall könnten Sie ein langes Trace über einen ganzen Tag aufzeichnen und dann den CPU-Planer, die Laufwerksaktivität, die Anwendungs-Threads und andere Daten im Bericht analysieren, um die Ursache des Fehlers zu ermitteln.

Ab Android 10 werden Trace-Dateien in einem Format gespeichert, das mit Perfetto geöffnet werden kann, einem Open-Source-Projekt zur Leistungsinstrumentierung und -verfolgung. Sie können Perfetto-Trace-Dateien in das Systrace-Format konvertieren.

Verbesserungen am TextClassifier

Android 10 bietet zusätzliche Textklassifizierungsfunktionen in der TextClassifier-Oberfläche.

Spracherkennung

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

TextLanguage-Objekte bestehen aus einer Liste geordneter Paare. Jedes Paar enthält eine Sprache und einen entsprechenden Konfidenzwert für die Klassifizierung.

Vorgeschlagene Unterhaltungsaktionen

Die Methode suggestConversationActions() funktioniert ähnlich wie vorhandene Klassifizierungsmethoden. Er 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 einen Konfidenzwert.

Intelligente Antworten/Aktionen in Benachrichtigungen

Mit Android 9 wurde die Möglichkeit eingeführt, vorgeschlagene Antworten in Benachrichtigungen anzuzeigen. 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 systemgenerierte Vorschläge deaktivieren.

Die zum Generieren dieser Antworten verwendete API ist Teil von TextClassifier und war auch direkt Entwicklern in Android 10 zugänglich. Weitere Informationen finden Sie im Abschnitt zu den Verbesserungen bei TextClassifier.

Wenn Ihre App eigene Vorschläge bereitstellt, generiert die Plattform keine automatischen Vorschläge. Wenn du nicht möchtest, dass in den Benachrichtigungen deiner App Vorschläge für Antworten oder Aktionen angezeigt werden, kannst du vom System generierte Antworten und Aktionen mit setAllowGeneratedReplies() und setAllowSystemGeneratedContextualActions() deaktivieren.