Android 10 bietet tolle Funktionen für Nutzer und zu entwickeln. In diesem Dokument werden die Funktionen für Entwickler beschrieben.
Weitere Informationen zu den APIs finden Sie in den Bericht zu den API-Unterschieden oder rufen Sie die Android API-Referenz – suchen Sie nach APIs, die „in API-Level 29". Sieh dir auch das Verhalten von Android 10 an Änderungen vornehmen (für Apps, die auf API-Level 29 ausgerichtet sind und für alle Apps) sowie Datenschutzeinstellungen , um zu erfahren, in welchen Bereichen auf Ihre Apps auswirken.
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: Unterstützung für biometrische Authentifizierung:
- Eine Prüfung der biometrischen Authentifizierungsfunktion.
- Ein Fallback-Mechanismus, mit dem sich Nutzer mit ihrem Gerät authentifizieren können PIN, Muster oder Passwort, wenn sie sich nicht mit ihrem biometrischen Verfahren authentifizieren können Eingabe.
- Hinweis, mit dem das System angewiesen wird, nach dem Nutzer keine Bestätigung anzufordern mit einer impliziten biometrischen Modalität authentifiziert wurde. Zum Beispiel könnten Sie dem System mitteilen, dass keine weitere Bestätigung erforderlich ist, nachdem der Nutzer mit Gesichtserkennung authentifiziert.
Eingebetteten DEX-Code direkt vom APK ausführen
Ab Android 10 können Sie festlegen, dass eingebettete DEX auf der Plattform ausgeführt werden sollen. Code direkt aus der APK-Datei Ihrer App. Diese Option kann einen Angriff verhindern falls es einem Angreifer jemals gelang, den lokal kompilierten Code auf dem .
Weitere Informationen finden Sie unter Führen Sie den eingebetteten DEX-Code direkt über das APK aus.
TLS 1.3-Unterstützung
Android 10 unterstützt jetzt TLS 1.3 TLS 1.3 ist eine wichtige Überarbeitung des TLS-Standard mit Leistungsvorteilen und erhöhter Sicherheit Unsere Benchmarks zeigen, dass sich sichere Verbindungen bis zu 40% mit TLS 1.3 im Vergleich zu TLS 1.2 schneller.
Weitere Informationen zur Implementierung von TLS 1.3 finden Sie im Abschnitt zu TLS innerhalb der 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 der Klassen unter
android.net.ssl
enthalten statische
um auf Funktionen zuzugreifen, die in der allgemeinen
javax.net.ssl
APIs. Die Namen für diese Klassen können als Pluralform
der entsprechenden javax.net.ssl
-Klasse. Zum Beispiel Code, der auf
Instanzen von javax.net.ssl.SSLSocket
können stattdessen Methoden aus
SSLSockets
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. Dieses
kann Ihre App den Nutzer auffordern, den Zugangspunkt zu ändern, den der
mit dem das Gerät über
WifiNetworkSpecifier
zum Beschreiben der Eigenschaften eines angeforderten Netzwerks. Die Peer-to-Peer-Verbindung ist
werden nicht zur Bereitstellung des Netzwerks verwendet, z. B. für die Bootstrapping-Konfiguration für
sekundären Geräten wie Chromecast und Google Home-Hardware
Weitere Informationen finden Sie unter Wi-Fi Network Request API für Peer-to-Peer-Verbindungen.
API für WLAN-Netzwerkvorschläge
Unter Android 10 wird deine App jetzt unterstützt, um den Nutzer zu einer Verbindung aufzufordern mit einem WLAN-Zugangspunkt verbinden. Sie können Vorschläge machen, zu welchem Netzwerk eine Verbindung hergestellt werden soll an. Die Plattform wählt dann anhand der Daten aus, den Input von Ihren und anderen Apps.
Weitere Informationen zu dieser Funktion finden Sie unter Wi-Fi Suggest:
Verbesserungen der WLAN-Modi für hohe Leistung und niedrige Latenz
Mit Android 10 können Sie dem zugrunde liegenden Modem einen Hinweis geben, um die Latenz zu minimieren.
Android 10 erweitert die WLAN-Sperre API, um den Hochleistungsmodus und den Modus mit niedriger Latenz effektiv zu unterstützen. 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-Lookups mithilfe von
Klartextsuchen und DNS-over-TLS-Modus. Bisher hat das Plattform-DNS
Resolver unterstützt nur A- und AAAA-Einträge, mit denen nur die IP-Adresse
Adressen, die einem Namen zugeordnet sind, unterstützt jedoch keine anderen Eintragstypen.
Die DnsResolver
API bietet generische,
asynchrone Auflösung, sodass Sie SRV
, NAPTR
und andere
Eintragstypen. Beachten Sie, dass das Parsen der Antwort der Anwendung überlassen bleibt.
Informationen zu NDK-basierten Apps finden Sie unter android_res_nsend
.
Wi-Fi Easy Connect
Unter Android 10 können Sie Easy Connect zur WLAN-Bereitstellung verwenden.
Anmeldedaten auf einem Peer-Gerät an ein Peer-Gerät senden, als Ersatz für WPS, das eingestellt wurde.
Apps können Easy Connect in ihren Einrichtungs- und Bereitstellungsablauf integrieren, indem sie
die
ACTION_PROCESS_WIFI_EASY_CONNECT_URI
Nutzerabsicht verstehen.
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 den schnellen Verbindungsaufbau zu Wi-Fi Direct mithilfe von
vordefinierte Informationen enthalten. Diese Informationen werden über einen Nebenkanal wie Bluetooth oder NFC weitergegeben.
Das folgende Codebeispiel zeigt, wie Sie eine Gruppe mithilfe von Informationen:
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 deine App BLE-CoC-Verbindungen verwenden, um größere Datenmengen zu übertragen Streams zwischen zwei BLE-Geräten. Diese Schnittstelle abstrahiert Bluetooth und Konnektivitätsmechanismen, um die Implementierung zu vereinfachen.
Telefoniefunktionen
Android 10 enthält mehrere Verbesserungen im Zusammenhang mit der Telefonie.
Verbesserungen bei der Anrufqualität
Android 10 bietet die Möglichkeit, Informationen zur Qualität eines IP-Multimedia Subsystem-Aufrufe (IMS), einschließlich der Netzwerkqualität zum und vom Netzwerk, die diese Funktion unterstützen.
Anruf-Filter und Anrufer-ID
Mit Android 10 kannst du in deiner App Anrufe erkennen, die nicht
im Adressbuch des Nutzers als potenzielle Spamanrufe kennzeichnen und
im Namen des Nutzers unbemerkt zurückgewiesen. Informationen zu diesen blockierten Anrufen
werden in der Anrufliste als blockierte Anrufe protokolliert, um
wenn Anrufe fehlen. Durch die Verwendung dieser API ist die Anforderung nicht mehr erforderlich.
um vom Nutzer die Berechtigung READ_CALL_LOG
zum Anruf-Filter einzuholen
und Anrufer-ID-Funktion.
API für den Dienst zur Anrufweiterleitung
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. Für
Drittanbieter-Apps können beispielsweise Anrufe abbrechen und über VoIP umleiten.
Verbesserungen beim Erstellen von Dateien auf externen Speichern
Neben der Einführung der umfassenden Speicherplatz, Android 10 bietet folgende neue Funktionen für externe Speicherplatz:
- Sie können die
IS_PENDING
, um Ihre App exklusiven Zugriff auf eine Mediendatei, während sie auf die Festplatte geschrieben wird. - Wenn Sie einen bestimmten Speicherort kennen, an dem Dateien gespeichert werden sollten, können Sie dem System einen Hinweis wo die neu geschriebenen Dateien gespeichert werden.
- Jedes externe Speichergerät hat ein eindeutiges Volume Name.
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. In der Suchleiste wird angezeigt,
Wiedergabefortschritt von
PlaybackState.getPosition()
,
In einigen Fällen kann die Suchleiste verwendet werden, um zu einer bestimmten Stelle in der Wiedergabe zu springen.
. Die Darstellung und das Verhalten der Suchleiste werden durch folgende Regeln gesteuert:
- Die Steuerleiste 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. - Wenn in der Sitzung
ACTION_SEEK_TO
implementiert wird, kann der Nutzer die Steuerleiste ziehen auf Wiedergabeort steuern.
Native MIDI API
Die Android Native MIDI API (AMidi) bietet Anwendungsentwicklern die Möglichkeit, zum Senden und Empfangen von MIDI-Daten mit C/C++code, wodurch eine engere Integration Audio-/Steuerungslogik in C/C++ und minimiert den Bedarf für JNI.
Weitere Informationen finden Sie unter Android Native MIDI API.
Verbesserungen bei MediaCodecInfo
Android 10 fügt Methoden zu
MediaCodecInfo
, die mehr verraten
Informationen zu einem Codec.
Weitere Informationen finden Sie unter Medien-Codecs.
Thermal API
Wenn Geräte zu warm werden, können sie CPU und/oder GPU drosseln unerwartete Auswirkungen auf Apps und Spiele haben. 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 meldet den aktuellen Temperatur-Status, von leicht, mäßig bis stark, kritisch, Notfall und Herunterfahren.
Wenn das Gerät einen thermischen Stress meldet, können Apps und Spiele helfen, indem sie sich zurücklehnen laufenden Aktivitäten, um den Stromverbrauch auf verschiedene Arten zu reduzieren. Beispiel: oder Streaming-Apps die Auflösung/Bitrate oder den Netzwerkverkehr verringern kann, Flash oder die intensive Bildoptimierung deaktivieren, durch ein Spiel kann eine Medien-App die Sprecherlautstärke, und eine Karten-App könnte GPS deaktivieren.
Die Thermal API erfordert eine neue HAL-Schicht des Geräts. Diese wird derzeit unterstützt. für Pixel-Geräte mit Android 10. Wir arbeiten mit unserem Gerätehersteller zusammen. um das Ökosystem so schnell wie möglich umfassend zu unterstützen.
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 die Aufnahme von monochromen DNG-Raw-Dateien.
- Einführung von MONO- und NIR-CFA-Enumerationen zur Unterscheidung zwischen regulären monochrome Kamera und Infrarotkameras in der Nähe.
Sie können diese Funktion verwenden, um ein natives monochromes Bild aufzunehmen. Eine logische Gerät mit mehreren Kameras eine monochrome Kamera als physische Unterkamera nutzen, bessere Bildqualität bei schlechten Lichtverhältnissen.
Dynamisches Tiefenformat
Ab Android 10 können Kameras die Tiefendaten für ein Bild in einem separate Datei unter Verwendung eines neuen Schemas namens Dynamic Depth Format (DDF) erstellen. Apps können sowohl das JPG-Bild als auch die Tiefenmetadaten anfordern und diese Informationen verwenden, um in der Nachbearbeitung beliebige Unschärfen anzuwenden, ohne die ursprünglichen Bilddaten zu ändern.
Die Spezifikation für dieses Format finden Sie unter Dynamic Depth Format.
High Efficiency Image File Format
Das HEIF-Format (High Efficiency Image File) ist ein Standardformat für Bilder und Videos. bietet eine Codierung höherer Qualität und eine geringere Dateigröße im Vergleich zu und anderen Dateiformaten.
Weitere Informationen zum Dateiformat finden Sie unter HEIC
Verbesserungen bei mehreren Kameras
Android 10 verbessert die Zusammenführung mehrerer Kameras zu einer logischen Kamera. eine Funktion, die mit Android 9 (API-Level 28) eingeführt wurde. Folgendes wurde hinzugefügt zu die Camera2-API:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
: Damit können Sie abfragen, ob die übergebene Sitzung ausgeführt wurde oder nicht. Konfiguration kann eine Sitzung zur Kameraaufnahme erstellt werden.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
: aktiviert die ID der aktiven physischen Kamera für ein logisches Kameragerät. Mit den zurückgegebenen IDs können Sie logische Streams anfordern und Streams einer Unterkamera für eine bessere Energieeffizienz.
Accessibility Services API
Mit Android 10 wird die folgende neue Bedienungshilfe eingeführt Funktionen und APIs:
Flag für Eingabeschlüssel von AccessibilityNodeInfo
Ab Android 10 können Sie
isTextEntryKey()
um zu bestimmen, ob eine bestimmte AccessibilityNodeInfo
einen Texteingabeschlüssel darstellt
die Teil einer Tastatur oder eines Tastenfelds ist.
Dialogfeld für Bedienungshilfen – gesprochenes Feedback
Für den Fall, dass Nutzer den Kurzbefehl für Bedienungshilfen verwenden müssen, um ein können Sie das Dialogfeld mit Android 10 begleitet von einer Sprachausgabe-Aufforderung, wenn der Dienst sie anfordert.
Kurzbefehl für Bedienungshilfen, wenn die Bedienung über Gesten aktiviert ist
Wenn die Funktion Bedienung über Gesten aktiviert ist die Bedienungshilfen in Android 10 Schaltfläche ist nicht sichtbar oder auswählbar sind. Für den Zugriff auf das Menü der Bedienungshilfen müssen Nutzer eine der folgenden 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 Verknüpfung für Bedienungshilfen auf einem physischen Tastatur, indem Sie Strg + Alt + Z drücken.
Verbesserung der Bildschirmtastatur
Unter Android 10 können Bedienungshilfen anfordern, dass die Tastatur angezeigt, auch wenn das Gerät eine angeschlossene feste Tastatur erkennt. Nutzer können dieses Verhalten überschreiben.
Benutzerdefinierte Zeitlimits für Bedienungshilfen
Mit Android 10
getRecommendedTimeoutMillis()
der API erstellen. Diese Methode unterstützt benutzerdefinierte Zeitlimits für interaktive und
nicht interaktive UI-Elemente. Der Rückgabewert wird sowohl vom Nutzer
Einstellungen und Bedienungshilfen-APIs.
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
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 Benutzeroberfläche zum Speichern
Sie können ein Passwortfeld in einem Speicherdialogfeld ein- und ausblenden, indem Sie einen Aktions-Listener für das Dialogfeld festlegen und die Sichtbarkeit der entsprechenden Remote-Ansicht für das Passwort ändern.
Unterstützung für die Aktualisierung von Datasets
Autofill kann vorhandene Passwörter aktualisieren. Wenn Nutzende beispielsweise ein Passwort gespeichert hat und sie ein neues Passwort speichern, fordert Autofill den Nutzer auf, das vorhandene Passwort 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 ihn besser an das Builder
-Muster anzupassen.
Zuordnung eines Werts zu mehreren Typen von Kategorie-IDs zulassen
Wenn Sie UserData.Builder
unter Android 10 verwenden, können Sie einen Wert jetzt mehreren Arten von Kategorie-IDs zuordnen. In
In früheren Versionen wurde eine Ausnahme ausgelöst, wenn ein Wert mehr als einmal hinzugefügt wurde.
Verbesserte Unterstützung für Kreditkartennummern
Bei der Feldklassifizierung können jetzt vierstellige Zahlen als letzte vier Ziffern erkannt werden. einer Kreditkartennummer.
Unterstützung für die anwendungsspezifische Feldklassifizierung
In Android 10 wurde FillResponse.setUserData()
hinzugefügt, mit dem Sie app-spezifische Nutzerdaten für die Dauer der Sitzung festlegen können.
So kann der Autofill-Dienst einfacher Typen für Felder mit App-spezifischen
Inhalte.
UI und Systemsteuerung
Android 10 bietet folgende Verbesserungen an der Benutzeroberfläche:
Unterstützung von JVMTI-PopFrame-Capping
In Android 10 wird die Funktion can_pop_frames
in der JVMTI-Implementierung von Android unterstützt. Bei der Fehlerbehebung kann diese Funktion
können Sie Funktionen noch einmal ausführen, nachdem Sie an einem Haltepunkt angehalten und eine Anpassung vorgenommen haben.
lokale oder globale Daten
oder die Implementierung einer Funktion. Weitere Informationen finden Sie unter
Pop Frame-Referenzseite von Oracle
Surface Control API
Android 10 bietet eine
SurfaceControl
-API
für Low-Level-Zugriff auf den System-Compositor
(SurfaceFlinger
) Für
für die meisten Nutzer ist SurfaceView die richtige Methode, um das zusammengesetzte Objekt zu nutzen. Die
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 in beiden
SDK und NDK-Bindungen.
Die NDK-Implementierung enthält ein 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 eines hängenden Renderers durch WebView
Mit Android 10
WebViewRenderProcessClient
abstrakte Klasse, mit der Apps feststellen können,
WebView
reagiert nicht mehr. Bis
verwenden Sie diese Klasse:
- Definieren Sie Ihre eigene abgeleitete Klasse und implementieren Sie ihre
onRenderProcessResponsive()
undonRenderProcessUnresponsive()
. - Eine Instanz von
WebViewRenderProcessClient
an eine oder mehrere anhängenWebView
-Objekte. - Wenn die
WebView
nicht mehr reagiert, ruft das System dieonRenderProcessUnresponsive()
-Methode des Clients auf und übergibt dieWebView
undWebViewRenderProcess
. (Wenn es sich beiWebView
um einen einzelnen Prozess handelt, ist derWebViewRenderProcess
ist null.) Ihre App kann geeignete Maßnahmen ergreifen, wie etwa das Einblenden einer wird der Nutzer gefragt, ob er den Rendering-Prozess anhalten möchte.
Wenn WebView
weiterhin nicht reagiert, ruft das System onRenderProcessUnresponsive()
auf.
In regelmäßigen Abständen (maximal einmal alle fünf Sekunden) und ohne weitere Aktionen.
Wenn WebView
responsiv wird
onRenderProcessResponsive()
wird vom System nur einmal aufgerufen.
Einstellungsbereiche
Mit Android 10 werden Settings Panels eingeführt, eine API, mit der in Apps Einstellungen für Nutzer im Kontext ihrer App. So wird verhindert, dass Nutzende um in den Einstellungen Einstellungen für NFC oder Mobile Daten um die App nutzen 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 Nachricht anzeigen Der Nutzer wird aufgefordert, die Einstellungen zu öffnen, um die Verbindung wiederherzustellen. Mit Android 10 In der Browser-App kann ein Inline-Bereich mit den wichtigsten Verbindungseinstellungen angezeigt werden. wie Flugmodus, WLAN (einschließlich nahe gelegener Netzwerke) und mobile Daten. Mit können Nutzer die Verbindung wiederherstellen, ohne die App zu verlassen.
Wenn Sie einen Einstellungsbereich einblenden möchten, lösen Sie einen Intent mit einer der folgenden Aktionen aus
Aktionen für Settings.Panel
:
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. Das ist nützlich für Apps, die für große Uploads oder Downloads eine WLAN-Verbindung benötigen.
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 Funktion Direct Share APIs
Anstatt Ergebnisse reaktiv auf Anfrage abzurufen, können Apps mit der Sharing Shortcuts API vorab direkte Freigabeziele veröffentlichen. So
ShortcutManager
funktioniert.
Da sich die beiden APIs ähneln, haben wir die ShortcutInfo
API, um sowohl die
Funktionen zu vereinfachen. Mit der Sharing Shortcuts API können Sie
Kategorien oder Personen zu einem gemeinsamen Ziel hinzufügen. Die Freigabeziele bleiben im System erhalten
bis sie von derselben App aktualisiert oder deinstalliert wird.
Der ältere Mechanismus der Direct Share funktioniert zwar weiterhin, aber Apps, die ihn verwenden, haben eine geringere Priorität als Apps, die die Sharing Shortcuts API verwenden.
ShortcutInfo.Builder
Es werden Methoden hinzugefügt und verbessert, um zusätzliche Informationen zum Freigabeziel bereitzustellen.
Direkte Freigabeziele
Sie können eine dynamische Verknüpfung als Ziel für die direkte Freigabe veröffentlichen. Weitere Informationen finden Sie unter Direkte Freigabeziele veröffentlichen.
ShortcutManagerCompat
ist eine neue AndroidX API, die abwärtskompatibel mit der alten DirectShare API ist. Dieses
ist die bevorzugte Methode zum Veröffentlichen von Freigabezielen.
Textvorschau
Wenn eine App Textinhalte teilt, kann eine optionale Vorschau dieser auf der Sharesheet-Benutzeroberfläche.
Weitere Informationen zum Hinzufügen von Vorschauen für Rich Text
Weitere Informationen
Weitere Informationen dazu, wie Apps Daten weitergeben können, Siehe 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 System-UI und Apps, die auf dem Gerät ausgeführt werden. Ausführliche Informationen finden Sie unter Dunkles Design.
Diensttypen im Vordergrund
Mit Android 10
foregroundServiceType
XML-Manifest-Attribut, das Sie in die Definition mehrerer
Dienstleistungen. Es ist zwar möglich, aber selten sinnvoll, mehrere
Typen von Diensten im Vordergrund zu einem bestimmten Dienst.
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:
Diensttyp im Vordergrund | Beispiel für einen Anwendungsfall für einen Dienst, für den dieser Typ deklariert werden sollte |
---|---|
connectedDevice
| Tragbare Fitness-Tracker im Blick behalten |
dataSync
| Dateien aus einem Netzwerk herunterladen |
location
| Weiter eine vom Nutzer initiierte Aktion |
mediaPlayback
| Hörbücher, Podcasts oder Musik abspielen |
mediaProjection
| Ein Video vom Display des Geräts für kurze Zeit aufnehmen |
phoneCall
| Aktiven Anruf verwalten |
Kotlin
Android 10 enthält die folgenden Updates für die Kotlin-Entwicklung.
Annotationen zur Null-Zulässigkeit 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 in Bezug auf die Null-Zulässigkeit in Kotlin zu einer Kompilierung.
Fehler. Um die Kompatibilität mit Ihrem vorhandenen Code sicherzustellen,
Die Annotationen @RecentlyNullable
und @RecentlyNonNull
wurden hinzugefügt. Das bedeutet,
dass Verstöße bei Null-Zulässigkeit zu Warnungen und nicht zu Fehlern führen.
Außerdem werden alle @RecentlyNullable
- oder @RecentlyNonNull
-Anmerkungen, die
in Android 9 hinzugefügt, werden zu @Nullable
bzw. @NonNull
geändert.
Das bedeutet, dass ab Android 10 Verstöße gegen die NULL-Zulässigkeit
zu Fehlern statt zu Warnungen führen.
Weitere Informationen zu den Änderungen an Anmerkungen finden Sie im Android Developers Blog unter Android Pie SDK ist jetzt Kotlin-freundlicher.
Logo: NDK
Android 10 enthält die folgenden NDK-Änderungen.
Verbesserte Fehlerbehebung für die Inhaberschaft von Dateideskriptoren
In Android 10 wird „fdsan“ hinzugefügt, mit dem du die Inhaberschaft von Dateideskriptoren finden und korrigieren kannst Probleme zu erleichtern.
Fehler im Zusammenhang mit der unsachgemäßen Handhabung von Dateideskriptoren, die sich häufig bemerkbar machen wie use-after-close und double-close, entsprechen der Arbeitsspeicherzuweisung use-after-free- und double-free-Fehler, die schwerer zu erstellen sind. zu diagnostizieren und zu beheben. fdsan versucht, einen Dateideskriptor zu erkennen und/oder zu verhindern indem Sie die Inhaberschaft für Dateideskriptoren erzwingen.
Weitere Informationen zu Abstürzen im Zusammenhang mit diesen Problemen findest du unter Fehler von fdsan erkannt. Weitere Informationen zu fdsan finden Sie in der Google-Quellseite 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. Dynamische und statische Verknüpfungen werden jetzt unterstützt
diese Methode zur Verarbeitung von
lokalen Thread-Variablen verwenden.
Für Apps, die für API-Level 28 und niedriger entwickelt wurden, wurden Verbesserungen implementiert.
für libgcc/compiler-rt
, 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ösung der automatischen Speicherbereinigung auf Mallinfo-Basis
Wenn kleine Java-Plattformobjekte auf riesige Objekte im C++-Heap verweisen, C++-Objekte können oft nur zurückgefordert werden, wenn das Java-Objekt erfasst wird. beispielsweise abgeschlossen. In früheren Releases hat die Plattform die Größe mit Java-Objekten verknüpft. Diese Schätzung war nicht immer und gelegentlich zu stark erhöhter Speichernutzung führte, da der Plattform konnte die Speicherbereinigung nicht wie vorgesehen speichern.
In Android 10 verfolgt die automatische Speicherbereinigung (GC) die Gesamtgröße
des Heaps, der vom System malloc()
zugewiesen wurde, wodurch eine große malloc()
Zuweisungen sind immer in durch GC ausgelösten Berechnungen enthalten. Apps verschachteln
bei einer großen Anzahl von C++-Zuweisungen
bei der Ausführung von Java zu einem Anstieg
die Häufigkeit der automatischen Speicherbereinigung. Bei anderen Apps kann es einen leichten Rückgang geben.
Testen und Fehlerbehebung
Android 10 enthält die folgenden Verbesserungen für Tests und Fehlerbehebungen.
Verbesserungen beim On-Device-System-Tracing
Ab Android 10 können Sie Beschränkungen für die Größe und eines Trace, wenn Sie eine On-Device-System-Trace. Wenn Sie wird ein langes Trace ausgeführt und der Trace wird regelmäßig kopiert. in der Zieldatei gepuffert werden, während die Ablaufverfolgung aufgezeichnet wird. Der Trace wird abgeschlossen Die angegebene Größe oder Dauer ist erreicht.
Verwenden Sie diese zusätzlichen Parameter, um andere Anwendungsfälle zu testen. mit einem Standard-Trace. Sie diagnostizieren beispielsweise einen Leistungsfehler, die erst erfolgt, nachdem Ihre App über einen längeren Zeitraum hinweg ausgeführt wurde. In In diesem Fall könnten Sie einen langen Trace über einen ganzen Tag hinweg aufzeichnen und dann den CPU-Planer, die Laufwerksaktivität, App-Threads und andere Daten im Bericht, um die Ursache des Fehlers zu finden.
Ab Android 10 werden Trace-Dateien in einem Format gespeichert, kann mit Perfetto geöffnet werden, 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
.
Spracherkennung
Die
detectLanguage()
funktioniert ähnlich wie bereits vorhandene Klassifizierungsmethoden. Es
erhält ein
TextLanguage.Request
-Objekt und gibt ein
TextLanguage
-Objekt enthält.
TextLanguage
-Objekte bestehen aus einer Liste von geordneten Paaren. Jedes Paar
enthält eine Sprache und einen entsprechenden Konfidenzwert für die Klassifizierung.
Vorgeschlagene Konversationsaktionen
Die
suggestConversationActions()
funktioniert ähnlich wie bestehende Klassifizierungsmethoden. Sie erhält eine
ConversationActions.Request
-Objekt und gibt ein
ConversationActions
-Objekt enthält.
ConversationActions
-Objekte bestehen aus einer Liste von
ConversationAction
Objekte. Jedes ConversationAction
-Objekt enthält ein potenzielles
die vorgeschlagene Aktion und ihren Konfidenzwert.
Intelligente Antworten/Aktionen in Benachrichtigungen
Mit Android 9 wurde die Möglichkeit eingeführt, Antwortvorschläge innerhalb eines Benachrichtigung. Android 10 bietet die Möglichkeit, vorgeschlagene intentbasierte Aktionen einzubinden. Darüber hinaus kann die Plattform automatisch generieren lassen. Apps können weiterhin ihre eigenen oder vom System generierte 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 bereitstellt, werden von der Plattform keine Vorschläge generiert.
automatische Vorschläge. Wenn Sie nicht möchten, dass die Benachrichtigungen Ihrer App angezeigt werden
Vorschläge zu Antworten oder Aktionen erhalten, kannst du diese Funktion deaktivieren.
und Aktionen mithilfe von
setAllowGeneratedReplies()
und
setAllowSystemGeneratedContextualActions()