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 Authentifizierung
- 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 dem System mitteilt, keine Nutzerbestätigung anzufordern, 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. Mit dieser Option lässt sich ein Angriff verhindern, falls ein Angreifer es schafft, den lokal kompilierten Code auf dem Gerät zu manipulieren.
Weitere Informationen finden Sie unter Eingebetteten DEX-Code direkt aus dem 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 auf der Seite Änderungen am Verhalten für alle Apps im Abschnitt „TLS“.
Ö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 dieser 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 Zusammenhang mit Netzwerken 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 die Peer-to-Peer-Verbindung.
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.
In Android 10 wurde die WLAN-Sperre API erweitert, um den Hochleistungsmodus und den Modus mit niedriger Latenz effektiv zu unterstützen. Die WLAN-Energiesparfunktion ist für den Modus „Hohe Leistung“ und den Modus „Niedrige Latenz“ deaktiviert. Je nach Modemunterstützung kann im Modus „Niedrige 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 die schnelle Verbindungsherstellung mit Wi‑Fi Direct mithilfe vordefinierter Informationen zu unterstützen. Diese Informationen werden über einen Nebenkanal wie Bluetooth oder NFC weitergegeben.
Im folgenden Codebeispiel wird gezeigt, wie Sie eine Gruppe mithilfe 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 Konnektivitätsmechanismen, um die Implementierung zu vereinfachen.
Telefonfunktionen
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 erhält. 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
Unter Android 10 können zwei Apps den Audioeingang gleichzeitig nutzen. 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 laufenden Programm gesprungen werden. Das Aussehen und Verhalten der Wiedergabeleiste wird durch die folgenden Regeln gesteuert:
- Die Schiebeleiste wird angezeigt, wenn
MediaSession
aktiv ist und seine Dauer (durchMediaMetadata.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
Mit der Android Native MIDI API (AMidi) können App-Entwickler MIDI-Daten mit C/C++-Code senden und empfangen. Dadurch lassen sich die 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 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 im PowerManager, über den das System den aktuellen thermischen Status meldet, von „gering“ und „mittel“ bis „schwer“, „kritisch“, „Notfall“ und „Herunterfahren“.
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.
Die Thermal API erfordert eine neue HAL-Schicht für Geräte. 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 gesamte System so schnell wie möglich zu ermöglichen.
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 einer normalen monochromen Kamera und einer Nahinfrarotkamera zu unterscheiden.
Mit dieser Funktion können Sie ein natives Schwarz-Weiß-Bild aufnehmen. Ein Gerät mit mehreren logischen Kameras kann eine Monochromkamera als physische Unterkamera verwenden, um bei schlechten Lichtverhältnissen eine bessere Bildqualität zu erzielen.
Dynamisches Tiefenformat
Ab Android 10 können Kameras die Tiefendaten für ein Bild in einer separaten Datei mit dem neuen Schema „Dynamic Depth Format“ (DDF) 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
HEIF (High Efficiency Image File) ist ein Standardbild- und Videoformat, das im Vergleich zu anderen Dateiformaten eine höhere Codierungsqualität und eine kleinere 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:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: Damit kannst du prüfen, ob die übergebene Sitzungskonfiguration verwendet werden kann, um eine Kameraaufnahmesitzung zu erstellen.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
: Mit dieser Option können Sie die ID der aktiven physischen Kamera ermitteln, die einem logischen Kameragerät zugeordnet ist. Sie können die zurückgegebenen IDs verwenden, um logische Streams und physische Streams von Unterkameras anzufordern, um die Energieeffizienz zu verbessern.
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 Dialogfeldvorschlag durch eine Sprachausgabe begleitet werden, wenn der Dienst dies anfordert.
Bedienungshilfe-Tastenkombination bei aktivierter Gestennavigation
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.
- 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 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 Soft-Tastatur angezeigt wird, auch wenn das Gerät eine angeschlossene Hardwaretastatur 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 unterstützt benutzerdefinierte Zeitüberschreitungen 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
Mit dem Flag SaveInfo.FLAG_DELAY_SAVE
können Sie Fälle unterstützen, in denen eine Anwendung mehrere Aktivitäten verwendet, um den Nutzernamen, das Passwort und andere Felder anzuzeigen.
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
Mit der Funktion „Autofill“ können vorhandene Passwörter aktualisiert werden. 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.
Zulassen, dass ein Wert mehreren Arten von Kategorie-IDs zugeordnet werden kann
Wenn Sie UserData.Builder
unter Android 10 verwenden, können Sie einen Wert jetzt mehreren Arten 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 appspezifische 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:
JVMTI PopFrame-Caps unterstützen
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 pausiert und lokale, globale Variablen oder die Implementierung einer Funktion angepasst haben. Weitere Informationen finden Sie auf der Referenzseite zu 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, den Compositor zu nutzen. Die SurfaceControl
API kann in bestimmten Fällen hilfreich 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:
- Definieren Sie eine eigene Unterklasse und implementieren Sie die Methoden
onRenderProcessResponsive()
undonRenderProcessUnresponsive()
. - Hängen Sie eine Instanz Ihres
WebViewRenderProcessClient
an ein oder mehrereWebView
-Objekte an. - Wenn die
WebView
nicht mehr reagiert, ruft das System dieonRenderProcessUnresponsive()
-Methode des Clients auf und übergibt dieWebView
undWebViewRenderProcess
. WennWebView
einen einzelnen Prozess hat, ist der ParameterWebViewRenderProcess
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.
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 verlassen zu müssen.
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 finden Sie Einstellungen für die Internetverbindung, z. B. den Flugmodus, WLAN und mobile Daten.
ACTION_WIFI
- Die WLAN-Einstellungen werden angezeigt, 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 auf Anfrage abzurufen, können Apps mit der Sharing Shortcuts API vorab direkte Freigabeziele veröffentlichen. So funktioniert das 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.
Ziele für die direkte Anteilsbeteiligung
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 Zielvorhaben für die gemeinsame Nutzung 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 selten sinnvoll, einem bestimmten Dienst mehrere Typenbezeichnungen für Dienste 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 des Displays des Geräts über einen kurzen Zeitraum aufzeichnen |
phoneCall
| Aktiven Anruf verwalten |
Kotlin
Android 10 enthält die folgenden Updates für die Kotlin-Entwicklung.
Anmerkungen zur Ignorierbarkeit für libcore APIs
In Android 10 wurde die Abdeckung der Anmerkungen zur Nullbarkeit im SDK für libcore APIs verbessert. 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. Das bedeutet, dass Verstöße gegen die Nullbarkeit 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 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 wurde fdsan hinzugefügt, mit dem sich Probleme mit der Eigentümerschaft von Dateideskriptoren leichter finden und beheben lassen.
Fehler im Zusammenhang mit der unsachgemäßen Handhabung der Eigentümerschaft von Dateideskriptoren, die sich in der Regel als Use-After-Close- und Double-Close-Fehler manifestieren, sind analog zu den Use-After-Free- und Double-Free-Fehlern 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 Eigentümerschaft 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 ELF TLS anstelle von emutls
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 finden Sie unter Änderungen an Android 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 riesige Objekte im C++-Heap verweisen, können die C++-Objekte oft erst wiederverwendet werden, wenn das Java-Objekt erfasst und beispielsweise finalisiert wird. 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 zugewiesenen malloc()
-Haufens. 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 beim On-Device-System-Tracing
Ab Android 10 können Sie bei einem On-Device-System-Trace Limits für die Größe und Dauer eines Tracings festlegen. 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 Tracedateien 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 beim Textklassifikator
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 bestehende 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 bietet die Möglichkeit, vorgeschlagene intentbasierte Aktionen einzubinden. Außerdem kann die Plattform diese Vorschläge automatisch generieren. 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 wurde in Android 10 auch direkt für Entwickler freigegeben.
Weitere Informationen finden Sie im Abschnitt Verbesserungen am TextClassifier.
Wenn Ihre App eigene Vorschläge liefert, 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()
.