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 (durchMediaMetadata.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:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: Damit können Sie abfragen, ob die übergebene Sitzungskonfiguration zum Erstellen einer Kameraaufnahmesitzung verwendet werden kann.Mit
LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
können Sie die ID der aktiven physischen Kamera ermitteln, die ein logisches Kameragerät unterstützt. Sie können die zurückgegebenen IDs verwenden, um logische Streams und physische Unterkamera-Streams anzufordern, um eine bessere Energieeffizienz zu erreichen.
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:
- Definieren Sie Ihre eigene abgeleitete Klasse und implementieren Sie die Methoden
onRenderProcessResponsive()
undonRenderProcessUnresponsive()
. - Hängen Sie eine Instanz von
WebViewRenderProcessClient
an ein oder mehrereWebView
-Objekte an. - Wenn
WebView
nicht mehr reagiert, ruft das System dieonRenderProcessUnresponsive()
-Methode des Clients auf und übergibtWebView
undWebViewRenderProcess
. Wenn es sich beiWebView
um einen einzelnen Prozess handelt, ist der ParameterWebViewRenderProcess
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.
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.