Funktionen und APIs unter Android 10

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 (durch MediaMetadata.METADATA_KEY_DURATION angegeben) größer als null ist. Das bedeutet, dass die Leiste nicht für unbestimmte Streams wie Livestreams und Radioübertragungen.
  • 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:

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:

  1. Definieren Sie Ihre eigene abgeleitete Klasse und implementieren Sie ihre onRenderProcessResponsive() und onRenderProcessUnresponsive() .
  2. Eine Instanz von WebViewRenderProcessClient an eine oder mehrere anhängen WebView-Objekte.
  3. Wenn die WebView nicht mehr reagiert, ruft das System die onRenderProcessUnresponsive()-Methode des Clients auf und übergibt die WebView und WebViewRenderProcess. (Wenn es sich bei WebView um einen einzelnen Prozess handelt, ist der WebViewRenderProcess 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.

Abbildung 1: Der Nutzer versucht, eine Webseite zu öffnen, während das Gerät läuft. nicht mit dem Netzwerk verbunden ist. Chrome öffnet das Fenster Internetverbindung. Einstellungsbereich...

Abbildung 2: Der Nutzer kann WLAN aktivieren und ein Netzwerk auswählen. ohne die Chrome App zu verlassen.

Angenommen, ein Nutzer öffnet einen Webbrowser, während 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()