Funktionen und APIs unter Android 10

Android 10 bietet Nutzern und Entwicklern viele neue Funktionen. In diesem Dokument wird erläutert, was Entwicklern zur Verfügung steht.

Weitere Informationen zu den APIs finden Sie im API-Differenzbericht oder in der Android-API-Referenz. Suchen Sie nach APIs, die „in API-Level 29 hinzugefügt“ wurden. Sehen Sie sich auch die Verhaltensänderungen in Android 10 an (für Apps, die auf API-Level 29 ausgerichtet sind und für alle Apps) sowie die Änderungen beim 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

In Android 10 wurden die folgenden Verbesserungen für die biometrische Authentifizierung eingeführt:

  • Eine Überprüfung der biometrischen Authentifizierungsfunktion.
  • Ein Fallback-Mechanismus, mit dem sich ein Nutzer mit der PIN, dem Muster oder dem Passwort seines Geräts authentifizieren kann, wenn er sich nicht mit seinem biometrischen Input authentifizieren kann.
  • Ein Hinweis, der dem System mitteilt, dass nach der Authentifizierung des Nutzers mit einer impliziten biometrischen Methode keine Bestätigung durch den Nutzer erforderlich ist. Sie können dem System beispielsweise mitteilen, dass nach der Authentifizierung eines Nutzers per Gesichtserkennung keine weitere Bestätigung erforderlich sein soll.

Eingebetteten DEX-Code direkt aus APK ausführen

Ab Android 10 können Sie die Plattform anweisen, eingebetteten DEX-Code direkt aus der APK-Datei Ihrer App auszuführen. Diese Option kann helfen, einen Angriff zu verhindern, falls ein Angreifer den lokal kompilierten Code auf dem Gerät manipuliert.

Weitere Informationen finden Sie unter Eingebetteten DEX-Code direkt aus APK ausführen.

Unterstützung von TLS 1.3

In Android 10 wird TLS 1.3 unterstützt. TLS 1.3 ist eine wichtige Überarbeitung des TLS-Standards, die Leistungsverbesserungen und eine höhere Sicherheit bietet. Unsere Benchmarks zeigen, dass sich sichere Verbindungen mit TLS 1.3 bis zu 40 % schneller herstellen lassen als mit TLS 1.2.

Weitere Informationen zur Implementierung von TLS 1.3 finden Sie im TLS-Abschnitt auf der Seite „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 für den 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. Code, der auf Instanzen von javax.net.ssl.SSLSocket ausgeführt wird, kann stattdessen Methoden aus SSLSockets verwenden.

Verbindungsfunktionen

Android 10 bietet mehrere Verbesserungen in Bezug auf Netzwerke und Konnektivität.

API für WLAN-Netzwerkverbindung

Mit Android 10 wird die Unterstützung für Peer-to-Peer-Verbindungen eingeführt. Mit dieser Funktion kann Ihre App den Nutzer auffordern, den Zugriffspunkt zu ändern, mit dem das Gerät verbunden ist. Dazu wird WifiNetworkSpecifier verwendet, um Eigenschaften eines angeforderten Netzwerks zu beschreiben. Die Peer-to-Peer-Verbindung wird für Zwecke verwendet, die nicht mit der Bereitstellung von Netzwerken zusammenhängen, z. B. für die Bootstrap-Konfiguration von sekundären Geräten wie Chromecast und Google Home-Hardware.

Weitere Informationen finden Sie unter Wi-Fi Network Request API for peer-to-peer connectivity.

API für WLAN-Vorschläge

Unter Android 10 kann Ihre App den Nutzer auffordern, eine Verbindung zu einem WLAN-Zugangspunkt herzustellen. Sie können Vorschläge für das Netzwerk angeben, mit dem eine Verbindung hergestellt werden soll. Die Plattform entscheidet letztendlich, welcher Zugriffspunkt akzeptiert wird, basierend auf den Eingaben Ihrer und anderer Apps.

Weitere Informationen zu diesem Feature finden Sie unter WLAN-Vorschläge.

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

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

In Android 10 wird die Wi-Fi-Sperr-API erweitert, um den Hochleistungsmodus und den Modus mit geringer Latenz effektiv zu unterstützen. Der WLAN-Energiesparmodus ist für den Hochleistungs- und den Modus mit geringer Latenz deaktiviert. Im Modus mit geringer Latenz kann je nach Modemunterstützung eine weitere Latenzoptimierung aktiviert werden.

Der Modus mit niedriger Latenz wird nur aktiviert, wenn die Anwendung, die die Sperre erhält, im Vordergrund ausgeführt wird und das Display aktiviert ist. Der Modus mit geringer Latenzzeit ist besonders hilfreich für mobile Echtzeit-Gaming-Anwendungen.

Spezialisierte Lookups im DNS-Resolver

Android 10 bietet native Unterstützung für spezielle DNS-Lookups mit Cleartext-Lookups 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 nachgeschlagen 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 muss von der App übernommen werden.

Informationen zu NDK-basierten Apps finden Sie unter android_res_nsend.

Wi‑Fi Easy Connect

Mit Android 10 können Sie Easy Connect verwenden, um WLAN-Anmeldedaten für ein Peer-Gerät bereitzustellen. Dies ist ein Ersatz für WPS, das nicht mehr unterstützt wird. Apps können Easy Connect in ihren Einrichtungs- und Bereitstellungsablauf einbinden, indem sie den Intent ACTION_PROCESS_WIFI_EASY_CONNECT_URI 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 die schnelle Verbindungsherstellung zu Wi‑Fi Direct mithilfe von vorab festgelegten Informationen zu unterstützen. Diese Informationen werden über einen Nebenkanal wie Bluetooth oder NFC geteilt.

Das folgende Codebeispiel zeigt, wie Sie eine Gruppe mit vorgegebenen 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 Connection Oriented Channels (CoC)

Unter 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 umfasst mehrere Verbesserungen im Zusammenhang mit der Telefonie.

Verbesserungen 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) erhoben werden, einschließlich der Qualität zum und vom Netzwerk.

Anruf-Filter und Anrufer-ID

Unter Android 10 kann Ihre App Anrufe, die nicht im Adressbuch des Nutzers enthalten sind, als potenzielle Spam-Anrufe identifizieren und Spam-Anrufe im Namen des Nutzers stumm ablehnen. Informationen zu diesen blockierten Anrufen werden im Anrufprotokoll als blockierte Anrufe protokolliert, um dem Nutzer mehr Transparenz zu bieten, wenn er Anrufe verpasst. Durch die Verwendung dieser API ist es nicht mehr erforderlich, die Berechtigung READ_CALL_LOG vom Nutzer einzuholen, um die Funktionen zur Anrufer-ID und Anruferkennung bereitzustellen.

Service-API zur Anrufweiterleitung

In Android 10 hat sich die Verarbeitung von Anruf-Intents geändert. Der NEW_OUTGOING_CALL-Broadcast wird nicht mehr verwendet und durch die CallRedirectionService-API ersetzt. Die CallRedirectionService API bietet Schnittstellen, mit denen Sie ausgehende Anrufe der Android-Plattform ändern können. Drittanbieter-Apps können beispielsweise Anrufe beenden und über VoIP weiterleiten.

Verbesserungen beim Erstellen von Dateien auf externem Speicher

Neben der Einführung von Scoped Storage bietet Android 10 die folgenden Funktionen im Zusammenhang mit externem Speicher:

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

Medien und Grafiken

Unter Android 10 werden die folgenden neuen Media- und Grafikfunktionen und APIs eingeführt:

Audioeingabe freigeben

Unter Android 10 können zwei Apps gleichzeitig den Audioeingang nutzen. Weitere Informationen

Aufnahme der Audiowiedergabe

Unter Android 10 kann eine App die Audiowiedergabe anderer Apps aufzeichnen. Weitere Informationen

Suchleiste in MediaStyle-Benachrichtigungen

Ab Android 10 wird in MediaStyle-Benachrichtigungen eine Fortschrittsanzeige angezeigt. Die Suchleiste zeigt den Wiedergabefortschritt ab PlaybackState.getPosition() an. In einigen Fällen kann sie verwendet werden, um zu einer bestimmten Stelle im laufenden Programm zu springen. Das Aussehen und Verhalten der Fortschrittsanzeige wird durch diese Regeln gesteuert:

  • Die Suchleiste wird angezeigt, wenn ein aktives MediaSession vorhanden ist und seine Dauer (angegeben durch MediaMetadata.METADATA_KEY_DURATION) größer als null ist. Das bedeutet, dass der Balken nicht für unbestimmte Streams wie Livestreams und Radiosendungen angezeigt wird.
  • Wenn in der Sitzung ACTION_SEEK_TO implementiert ist, kann der Nutzer die Suchleiste ziehen, um die Wiedergabeposition zu steuern.

Native MIDI API

Die Android Native MIDI API (AMidi) ermöglicht es App-Entwicklern, MIDI-Daten mit C/C++-Code zu senden und zu empfangen. So können sie ihre C/C++-Audio-/Steuerungslogik besser integrieren und die Notwendigkeit von JNI minimieren.

Weitere Informationen finden Sie unter Android Native MIDI API.

Verbesserungen bei MediaCodecInfo

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

Weitere Informationen finden Sie unter Medien-Codecs.

Thermal API

Wenn Geräte zu warm werden, kann die CPU und/oder GPU gedrosselt werden. Das kann sich unerwartet auf Apps und Spiele auswirken. Bei Apps, die komplexe Grafiken, rechenintensive Vorgänge oder eine kontinuierliche Netzwerkaktivität verwenden, treten eher Probleme auf. Diese können je nach Gerät variieren und hängen vom Chipsatz und den Kernfrequenzen, dem Integrationsgrad sowie dem Gehäuse und Formfaktor des Geräts ab.

In Android 10 können Apps und Spiele eine Thermal API verwenden, um Änderungen auf dem Gerät zu überwachen und Maßnahmen zu ergreifen, um den Stromverbrauch zu senken und die normale Temperatur wiederherzustellen. Apps registrieren einen Listener in PowerManager, über den das System den aktuellen thermischen Status meldet, der von leicht und moderat bis schwer, kritisch, Notfall und Herunterfahren reicht.

Wenn das Gerät eine thermische Belastung meldet, können Apps und Spiele helfen, indem sie laufende Aktivitäten auf verschiedene Weise reduzieren, um den Stromverbrauch zu senken. Streaming-Apps könnten beispielsweise die Auflösung/Bitrate oder den Netzwerkverkehr reduzieren, eine Kamera-App könnte den Blitz oder die intensive Bildoptimierung deaktivieren, ein Spiel könnte die Bildrate oder die Polygon-Tesselierung reduzieren, eine Media-App könnte die Lautsprecherlautstärke reduzieren und eine Karten-App könnte GPS deaktivieren.

Für die Thermal API ist eine neue Geräte-HAL-Ebene erforderlich. Sie wird derzeit auf Pixel-Geräten mit Android 10 unterstützt. Wir arbeiten mit unseren Geräteherstellern zusammen, um die Unterstützung für das Ökosystem so schnell wie möglich auszuweiten.

Kamera und Bilder

Android 10 bietet die folgenden neuen Kamera- und Bildfunktionen:

Unterstützung für monochrome Kameras

Die Funktion für monochrome Kameras wurde erstmals in Android 9 (API-Level 28) eingeführt. In Android 10 wurden mehrere Verbesserungen für die Unterstützung von Monochromkameras eingeführt:

  • Unterstützung des Y8-Streamformats zur Verbesserung der Speichereffizienz.
  • Unterstützung für die Aufnahme von monochromen DNG-Rohbildern.
  • Einführung von MONO- und NIR-CFA-Aufzählungen zur Unterscheidung zwischen regulären monochromen Kameras und Nahinfrarotkameras.

Mit dieser Funktion können Sie ein monochromes Bild aufnehmen. Ein logisches Gerät mit mehreren Kameras kann eine Monochromkamera als physische Unterkamera verwenden, um eine bessere Bildqualität bei schwachem Licht zu erzielen.

Dynamisches Tiefenformat

Ab Android 10 können Kameras die Tiefendaten für ein Bild in einer separaten Datei speichern. Dazu wird ein neues Schema namens „Dynamic Depth Format“ (DDF) verwendet. Apps können sowohl das JPG-Bild als auch die zugehörigen Tiefenmetadaten anfordern und diese Informationen verwenden, um in der Nachbearbeitung beliebige Unschärfeeffekte 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 Standardbild- und ‑videoformat, das im Vergleich zu anderen Dateiformaten eine hochwertigere Codierung und eine kleinere Dateigröße bietet.

Weitere Informationen zum Dateiformat finden Sie unter HEIC.

Verbesserungen bei der Multi-Kamera-Funktion

In Android 10 wird das Zusammenführen mehrerer Kameras zu einer einzelnen logischen Kamera verbessert. Diese Funktion wurde in Android 9 (API-Level 28) eingeführt. Der Camera2 API wurden folgende Elemente hinzugefügt:

Accessibility Services API

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

Eintragsschlüsselflag für AccessibilityNodeInfo

Ab Android 10 können Sie isTextEntryKey() aufrufen, um festzustellen, ob ein bestimmtes AccessibilityNodeInfo einen Texteingabeschlüssel darstellt, der Teil einer Tastatur oder eines Tastenfelds ist.

Gesprochenes Feedback im Dialogfeld zur Barrierefreiheit

Wenn Nutzer die Tastenkombination für Bedienungshilfen ausführen müssen, um einen Bedienungshilfendienst zu starten, kann das Dialogfeld in Android 10 auf Wunsch des Dienstes von einer Sprachausgabe begleitet werden.

Kurzbefehl für Bedienungshilfen bei aktivierter Gestensteuerung

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

  • Wischen Sie mit zwei Fingern nach oben.
  • Wischen Sie mit zwei Fingern nach oben und halten Sie das Touchpad gedrückt.

Bedienungshilfen-Kurzbefehl 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.

Verbesserung der Steuerung der Bildschirmtastatur

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

Benutzerdefinierte Zeitüberschreitungen für die Barrierefreiheit

Mit Android 10 wird die getRecommendedTimeoutMillis() API eingeführt. Diese Methode bietet Unterstützung für nutzerdefinierte Zeitüberschreitungen für interaktive und nicht interaktive UI-Elemente. Der Rückgabewert wird sowohl von den Nutzereinstellungen als auch von den APIs für Barrierefreiheitsdienste beeinflusst.

Verbesserungen bei Autofill

Android 10 enthält die folgenden Verbesserungen am Dienst zum automatischen Ausfüllen.

AutoFill-Anfragen im Zusammenhang mit der Kompatibilität

Mit dem Flag FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST können Sie ermitteln, ob eine Autofill-Anfrage im 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, indem Sie das Flag SaveInfo.FLAG_DELAY_SAVE verwenden.

Nutzerinteraktion mit der Speichern-Benutzeroberfläche

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

Unterstützung für das Aktualisieren von Datasets

Mit Autofill können vorhandene Passwörter aktualisiert werden. Wenn ein Nutzer beispielsweise bereits ein Passwort gespeichert hat und ein neues Passwort speichert, fordert Autofill ihn auf, 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 dem Builder-Muster zu entsprechen.

Zulassen, dass ein Wert mehreren Arten von Kategorie-IDs zugeordnet wird

Wenn Sie UserData.Builder in Android 10 verwenden, können Sie jetzt einen Wert mehreren Arten von Kategorie-IDs zuordnen. In früheren Versionen wurde eine Ausnahme ausgelöst, wenn ein Wert mehr als einmal 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 app-spezifische Feldklassifizierung

In Android 10 wird FillResponse.setUserData() eingeführt, mit dem Sie app-spezifische Nutzerdaten für die Dauer der Sitzung festlegen können. So kann der Autofill-Dienst Typen für Felder mit app-spezifischen Inhalten erkennen.

UI- und Systemsteuerung

Android 10 bietet die folgenden Verbesserungen der Benutzeroberfläche:

Unterstützung von JVMTI PopFrame-Grenzwerten

In Android 10 wird die Funktion can_pop_frames in der Android JVMTI-Implementierung 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 Variablen oder die Implementierung einer Funktion angepasst haben. Weitere Informationen finden Sie auf der Referenzseite für Pop-Frames 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, um den Compositor zu nutzen. Die SurfaceControl API kann in bestimmten Fällen nützlich sein, z. B.

  • Synchronisierung mehrerer Oberflächen
  • Prozessübergreifende Einbettung
  • Verwaltung des Lebenszyklus auf niedrigerer Ebene

Die SurfaceControl API ist sowohl im SDK als auch in NDK-Bindungen verfügbar. Die NDK-Implementierung umfasst 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ängengebliebenen Renderern in WebView

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

  1. Definieren Sie Ihre eigene Unterklasse 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 WebView ein einzelner Prozess ist, ist der Parameter WebViewRenderProcess null. Ihre App kann dann entsprechende Maßnahmen ergreifen, z. B. dem Nutzer in einem Dialogfeld die Frage stellen, ob er den Rendering-Vorgang beenden möchte.

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

Bereiche für Einstellungen

Mit Android 10 werden Einstellungen-Panels eingeführt. Diese API ermöglicht es Apps, Nutzern Einstellungen im Kontext der App anzuzeigen. So müssen Nutzer nicht erst die Einstellungen aufrufen, um beispielsweise NFC oder Mobilfunkdaten zu ändern, um die App zu verwenden.

Abbildung 1. Der Nutzer versucht, eine Webseite zu öffnen, während das Gerät nicht mit dem Netzwerk verbunden ist. In Chrome wird das Einstellungsfeld Internetverbindung angezeigt.

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 Meldung anzeigen, in der der Nutzer aufgefordert wurde, die Einstellungen zu öffnen, um die Verbindung wiederherzustellen. Unter Android 10 kann in der Browser-App ein Inline-Bereich mit wichtigen Verbindungseinstellungen wie Flugmodus, WLAN (einschließlich Netzwerke in der Nähe) und mobile Daten angezeigt werden. Über dieses Feld können Nutzer die Verbindung wiederherstellen, ohne die App zu verlassen.

Wenn Sie ein Einstellungsfeld anzeigen möchten, senden Sie einen Intent mit einer der folgenden Settings.Panel-Aktionen:

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

Verbesserungen beim Teilen

Android 10 bietet eine Reihe von Verbesserungen beim Teilen:

Sharing Shortcuts API

Die Sharing Shortcuts API ersetzt die Direct Share APIs.

Anstatt Ergebnisse reaktiv auf Anfrage abzurufen, können Apps mit der Sharing Shortcuts API im Voraus direkte Freigabeziele veröffentlichen. So funktioniert die 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 Freigabe-Ziel direkt Kategorien oder Personen zuweisen. Die Freigabeziele bleiben im System erhalten, bis sie von derselben App aktualisiert oder die App deinstalliert wird.

Der alte Mechanismus für das direkte Teilen funktioniert 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.

„Direct Share“-Ziele

Sie können eine dynamische Verknüpfung als Direct Share-Ziel veröffentlichen. Weitere Informationen finden Sie unter „Direct Share“-Ziele veröffentlichen.

ShortcutManagerCompat ist eine neue AndroidX API, die Abwärtskompatibilität mit der alten DirectShare API bietet. Dies ist die bevorzugte Methode zum Veröffentlichen von Freigabezielen.

Text in der Vorschau ansehen

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

Weitere Informationen

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. Weitere Informationen

Arten von Diensten im Vordergrund

In Android 10 wird das XML-Manifestattribut foregroundServiceType eingeführt, das Sie in die Definition mehrerer bestimmter Dienste einfügen. Es ist möglich, einem bestimmten Dienst mehrere Typenbezeichnungen für Dienste im Vordergrund zuzuweisen, aber das ist selten sinnvoll.

In der folgenden Tabelle sind die verschiedenen Typen von Vordergrunddiensten und die Dienste aufgeführt, in denen es angemessen ist, einen bestimmten Typ zu deklarieren:

Typ des Diensts im Vordergrund Beispielanwendungsfall für einen Dienst, der diesen Typ deklarieren sollte
connectedDevice Fitness-Tracker überwachen
dataSync Dateien aus einem Netzwerk herunterladen
location Vom Nutzer initiierte Aktion fortsetzen
mediaPlayback Hörbuch, Podcast oder Musik abspielen
mediaProjection Nehmen Sie ein kurzes Video vom Display des Geräts auf.
phoneCall Aktiven Anruf verwalten

Kotlin

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

Nullable-Annotationen für libcore-APIs

In Android 10 wurde die Abdeckung von Nullable-Anmerkungen im SDK für libcore-APIs verbessert. Mithilfe dieser Annotationen können App-Entwickler, die in Android Studio die Nullable-Analyse für Kotlin oder Java verwenden, Informationen zur Nullable-Analyse erhalten, wenn sie mit diesen APIs interagieren.

Normalerweise führen Nullable-Vertragsverletzungen in Kotlin zu Kompilierungsfehlern. Um die Kompatibilität mit Ihrem vorhandenen Code zu gewährleisten, werden nur die Anmerkungen @RecentlyNullable und @RecentlyNonNull hinzugefügt. Das bedeutet, dass Nullable-Verstöße zu Warnungen statt zu 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 in Android 10 und höher Nullable-Verstöße zu Fehlern statt zu Warnungen führen.

Weitere Informationen zu Änderungen bei Anmerkungen finden Sie im Android Developers Blog im Beitrag Android Pie SDK is now more Kotlin-friendly.

NDK

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

Verbesserte Fehlerbehebung bei der Eigentümerschaft von Dateideskriptoren

Unter Android 10 wird fdsan hinzugefügt, mit dem Sie Probleme mit dem Besitz von Dateideskriptoren leichter finden und beheben können.

Fehler im Zusammenhang mit der falschen Verarbeitung des Besitzes von Dateideskriptoren, die sich in der Regel als Use-After-Close und Double-Close manifestieren, sind analog zu den Fehlern Use-After-Free und Double-Free bei der Speicherzuweisung, sind aber in der Regel viel schwieriger zu diagnostizieren und zu beheben. fdsan versucht, eine falsche Verwaltung von Dateideskriptoren zu erkennen und/oder zu verhindern, indem der Besitz 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

Anwendungen, die mit dem NDK mit einem Mindest-API-Level 29 erstellt wurden, können ELF TLS anstelle von emutls verwenden. Es wurde Unterstützung für dynamische und statische Linker hinzugefügt, um diese Methode zur Verarbeitung von threadlokalen Variablen zu unterstützen.

Für Apps, 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 finden Sie unter Android-Änderungen für NDK-Entwickler.

Laufzeit

Android 10 enthält die folgende Laufzeitänderung.

Auslösen der automatischen Speicherbereinigung basierend auf „mallinfo“

Wenn kleine Java-Objekte der Plattform auf große Objekte im C++-Heap verweisen, können die C++-Objekte oft erst dann zurückgefordert werden, wenn das Java-Objekt erfasst und z. B. finalisiert wird. In früheren Releases hat die Plattform die Größen 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 durchgeführt hat.

In Android 10 verfolgt der Garbage Collector (GC) die Gesamtgröße des Heaps, der vom System malloc() zugewiesen wird. So wird dafür gesorgt, dass große malloc()-Zuweisungen immer in die Berechnungen zur GC-Auslösung einbezogen werden. Bei Apps, die eine große Anzahl von C++-Zuweisungen mit der Java-Ausführung verschachteln, kann sich dadurch die Häufigkeit der Garbage Collection erhöhen. Bei anderen Apps kann es zu einem leichten Rückgang kommen.

Testen und Fehlerbehebung

Android 10 bietet die folgenden Verbesserungen für Tests und Fehlerbehebung.

Verbesserungen beim System-Tracing auf dem Gerät

Ab Android 10 können Sie Limits für die Größe und Dauer eines Traces festlegen, wenn Sie einen Systemtrace auf dem Gerät ausführen. Wenn Sie einen der beiden Werte angeben, führt das System einen langen Trace aus und kopiert den Tracepuffer regelmäßig in die Zieldatei, während der Trace aufgezeichnet wird. Der Trace wird abgeschlossen, wenn die von Ihnen angegebenen Größen- oder Zeitlimits erreicht sind.

Mit diesen zusätzlichen Parametern können Sie andere Anwendungsfälle testen als mit einem Standard-Trace. Möglicherweise müssen Sie einen Leistungsfehler beheben, der erst nach längerer Laufzeit Ihrer App auftritt. In diesem Fall können Sie einen langen Trace über einen ganzen Tag aufzeichnen und dann den CPU-Scheduler, die Datenträgeraktivität, die App-Threads und andere Daten im Bericht analysieren, um die Ursache des Fehlers zu ermitteln.

In Android 10 und höher werden Tracedateien in einem Format gespeichert, das mit Perfetto geöffnet werden kann. Perfetto ist ein Open-Source-Projekt für die Leistungsmessung und das Tracing. Sie können Perfetto-Trace-Dateien in das Systrace-Format konvertieren.

Verbesserungen am TextClassifier

Android 10 bietet zusätzliche Funktionen zur Textklassifizierung in der TextClassifier-Schnittstelle.

Spracherkennung

Die Methode detectLanguage() funktioniert ähnlich wie die bisherigen 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 Konversationsaktionen

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 den zugehörigen Konfidenzwert.

Intelligente Antworten/Aktionen in Benachrichtigungen

Mit Android 9 wurde die Möglichkeit eingeführt, Antwortvorschläge in einer Benachrichtigung anzuzeigen. In Android 10 wird diese Funktion erweitert, sodass auch vorgeschlagene intentbasierte Aktionen enthalten sein können. Außerdem kann die Plattform diese Vorschläge automatisch generieren. Apps können weiterhin eigene Vorschläge machen oder sich gegen systemgenerierte Vorschläge entscheiden.

Die API, die zum Generieren dieser Antworten verwendet wird, ist Teil von TextClassifier und wurde Entwicklern in Android 10 direkt zur Verfügung gestellt. Weitere Informationen finden Sie im Abschnitt zu Verbesserungen bei TextClassifier.

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