Funktionen und APIs unter Android 8.0

Mit Android 8.0 (API-Level 26) werden neuen Funktionen für Nutzer und Entwickler. In diesem Dokument werden die Neuerungen für Entwickler beschrieben.

Sehen Sie sich auch die <ph type="x-smartling-placeholder"></ph> Verhaltensänderungen unter Android 8.0, um mehr über Bereiche zu erfahren, in denen sich die Plattform ändert kann sich auf deine Apps auswirken.

Nutzererfahrung

Bild-im-Bild-Modus

<ph type="x-smartling-placeholder">

Bild im Bild unter Android 8.0

Android 8.0 (API-Level 26) ermöglicht den Start von Aktivitäten in Bild-im-Bild-Modus (BiB). BiB ist ein spezielle Art des Mehrfenstermodus hauptsächlich für die Videowiedergabe verwendet. Der BiB-Modus war ursprünglich für Nur mit Android TV; Mit Android 8.0 wird die Funktion auf anderen Android-Geräten.

Eine Aktivität im BiB-Modus ist pausiert, sollte aber um die entsprechenden Inhalte anzuzeigen. Aus diesem Grund sollten Sie darauf achten, pausiert die Wiedergabe in onPause() nicht -Handler. In diesem Fall solltest du das Video in onStop() pausieren und die Wiedergabe in onStart() fortsetzen. Weitere Informationen finden Sie unter Mehrfenstermodus Lebenszyklus:

Um anzugeben, dass deine Aktivität den BiB-Modus verwenden kann, lege fest, android:supportsPictureInPicture im Manifest auf „true“. (Ab Android 8.0 ist für BiB kein Manifest-Attribut android:resizeableActivity. Sie müssen jedoch android:resizeableActivity auf „true“ setzen, wenn Ihre Aktivität andere unterstützt Mehrfenstermodus.

Mit Android 8.0 (API-Level 26) wird das neue Objekt PictureInPictureParams eingeführt. den Sie an PIP-Methoden übergeben, um festzulegen, wie sich eine Aktivität verhalten soll. wenn es sich im BiB-Modus befindet. Dieses Objekt gibt Eigenschaften wie die das bevorzugte Seitenverhältnis der Aktivität.

Die vorhandenen PIP-Methoden, die in Hinzufügen Bild im Bild kann jetzt die auf allen Android-Geräten verwendet werden, nicht nur auf Android TV. Außerdem Android 8.0 bietet die folgenden Methoden zur Unterstützung BiB-Modus:

  • Activity.enterPictureInPictureMode(PictureInPictureParams args): Versetzt die Aktivität in den Bild-im-Bild-Modus. Das Seitenverhältnis der Aktivität und andere Konfigurationseinstellungen werden durch args festgelegt. Falls Felder vorhanden sind in args leer sind, verwendet das System die Werte, die Sie das letzte Mal festgelegt haben, namens Activity.setPictureInPictureParams().

    Die angegebene Aktivität wird in einer Ecke des Bildschirms platziert. der Rest wird der Bildschirm mit der letzten Aktivität gefüllt, die auf dem Bildschirm zu sehen war. Die Aktivität, die in den BiB-Modus wechselt, wird pausiert, bleibt aber erhalten begonnen. Wenn der Nutzer auf die BiB-Aktivität tippt, zeigt das System ein Menü für mit denen Nutzende interagieren können; während der Aktivität keine Berührungsereignisse erreicht werden. im BiB-Status.

  • Activity.setPictureInPictureParams(): Aktualisiert die PIP-Konfigurationseinstellungen einer Aktivität. Wenn die Aktivität gerade im BiB-Modus sind, werden die Einstellungen aktualisiert. ist dies nützlich, wenn wie sich das Seitenverhältnis der Aktivität ändert. Befindet sich die Aktivität nicht im BiB-Modus, werden diese Konfigurationseinstellungen unabhängig von enterPictureInPictureMode()-Methode, die Sie aufrufen.

Benachrichtigungen

In Android 8.0 (API-Level 26) haben wir die Benachrichtigungen so umgestaltet, eine einfachere und einheitlichere Möglichkeit bieten, das Benachrichtigungsverhalten zu verwalten und Einstellungen. Zu diesen Änderungen gehören:

    Eine Benachrichtigung bei langem Drücken auf Menü in Android 8.0 (API-Ebene 26)

    Nutzer können App Launcher-Symbole lange drücken, um sie zu sehen Benachrichtigungen unter Android 8.0.

  • Benachrichtigungskanäle: Einführung von Android 8.0 Benachrichtigungskanäle, mit denen Sie einen vom Nutzer anpassbaren Kanal erstellen können für jede Art von Benachrichtigung, die angezeigt werden soll. Die Benutzeroberfläche verweist auf für Benachrichtigungskanäle als Benachrichtigungskategorien. Weitere Informationen zur Implementierung von Benachrichtigungskanälen finden Sie unter Verwaltung Benachrichtigungskanäle.
  • App-Benachrichtigungspunkte: Android 8.0 unterstützt jetzt die Anzeige von Punkte oder Abzeichen auf App Launcher-Symbolen. Benachrichtigungspunkte stehen für Benachrichtigungen vorhanden sind, die der Nutzer noch nicht geschlossen oder auf die er noch nicht reagiert hat. Informationen zur Verwendung von App-Benachrichtigungspunkten finden Sie unter Benachrichtigung Badges.
  • Schlummerfunktion: Nutzer können Benachrichtigungen pausieren, wodurch sie verschwinden. für eine Weile, bevor sie wieder angezeigt werden. Benachrichtigungen erscheinen wieder mit dem wie wichtig sie auch beim ersten Mal sind. Apps können entfernt oder aktualisiert werden eine zurückgestellte Benachrichtigung, die Aktualisierung einer zurückgestellten Benachrichtigung damit sie wieder erscheint.
  • Zeitüberschreitungen für Benachrichtigungen: Sie können beim Erstellen einer Benachrichtigung über setTimeoutAfter() Mit dieser Methode können Sie einen Zeitraum festlegen, nach dem eine Benachrichtigung sollte storniert werden. Bei Bedarf können Sie eine Benachrichtigung vor dem das angegebene Zeitlimit überschreitet.
  • Benachrichtigungseinstellungen: Sie können setSettingsText() um den Text festzulegen, der beim Erstellen eines Links zum über das Symbol Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES-Intent. Das System kann folgende Extras anbieten, um Daten zu filtern Die Einstellungen, die deine App Nutzern anzeigen muss: EXTRA_CHANNEL_ID, NOTIFICATION_TAG und NOTIFICATION_ID.
  • Benachrichtigungen schließen: Nutzer können Benachrichtigungen selbst schließen. Apps können sie programmatisch entfernen. Sie können festlegen, wann eine Benachrichtigung und warum es durch Implementieren der onNotificationRemoved()-Methode des Klasse NotificationListenerService.
  • Hintergrundfarben: Sie können für ein Foto eine Hintergrundfarbe festlegen und aktivieren. Benachrichtigung. Sie sollten diese Funktion nur in Benachrichtigungen für laufenden Aufgaben, die für Nutzende auf einen Blick wichtig sind. Für Sie können beispielsweise eine Hintergrundfarbe für Benachrichtigungen festlegen, die sich auf eine Wegbeschreibung oder einen laufenden Telefonanruf erhalten. Sie können auch die die gewünschte Hintergrundfarbe setColor() Vorgehensweise ermöglicht dir setColorized(), eine Hintergrundfarbe für eine Benachrichtigung zu aktivieren.
  • Messaging-Stil: Unter Android 8.0 werden Benachrichtigungen, die die Anzeige der Klasse „MessagingStyle“ mehr Inhalte in der minimierten Form anzeigen. Sie sollten die Methode MessagingStyle Kurs für Messaging-bezogene Benachrichtigungen. Sie können auch die addHistoricMessage()-Methode, um durch Hinzufügen von Kontext zu einer Unterhaltung bisherigen Nachrichten in Benachrichtigungen zu Messaging.

AutoFill-Framework

Kontoerstellung, Anmeldung und Kreditkartentransaktionen nehmen Zeit in Anspruch und sind anfällig für Fehler. Nutzer können sich über Apps, die solche Typen erfordern, schnell verärgern. sich wiederholenden Aufgaben.

Unter Android 8.0 (API-Level 26) ist das Ausfüllen von Formularen, z. B. der Anmeldung, möglich und Kreditkartenformularen erleichtern die Einführung des Autofill-Frameworks. Vorhandene und neue Apps unterstützen das Autofill-Framework, nachdem der Nutzer zugestimmt hat. Autofill.

Sie können einige Schritte unternehmen, um die Funktionsweise Ihrer App mit dem Framework zu optimieren. Weitere Informationen finden Sie unter Übersicht über das Autofill-Framework.

Herunterladbare Schriftarten

Mit Android 8.0 (API-Level 26) und der Android Support Library 26 kannst du Schriftarten von einem anstatt Schriftarten im APK zu bündeln oder das APK-Downloadschriftarten Mit dieser Funktion wird die APK-Größe verringert und die Anzahl der und ermöglicht, dass mehrere Apps dieselbe Schriftart verwenden.

Weitere Informationen zum Herunterladen von Schriftarten finden Sie unter Herunterladbare Schriftarten:

Schriftarten in XML

Mit Android 8.0 (API-Level 26) wird eine neue Funktion eingeführt, Schriftarten in XML, die können Sie Schriftarten als Ressourcen verwenden. Es ist also nicht nötig, Schriftarten einzeln zu bündeln, als Assets. Schriftarten werden in der Datei R kompiliert und automatisch im System als Ressource verfügbar sind. Sie können dann über die des neuen Ressourcentyps font.

Die Support Library 26 bietet vollständigen Support für diese Funktion auf Geräten mit API-Version 14 und höher.

Weitere Informationen zur Verwendung von Schriftarten als Ressourcen und zum Abrufen von Systemschriftarten finden Sie Siehe Schriftarten in XML.

Größe von TextView automatisch anpassen

Unter Android 8.0 (API-Level 26) können Sie die Größe Ihrer basierend auf der Größe der TextView automatisch zusammen. Das heißt, es ist viel die Textgröße auf verschiedenen Bildschirmen oder mit dynamischen Inhalten zu optimieren. Weitere Informationen zur automatischen Größenanpassung von TextView unter Android 8.0 Siehe TextView automatisch skalieren.

Adaptive Symbole

Mit Android 8.0 (API-Level 26) werden adaptive Launcher-Symbole eingeführt. Adaptive Symbole unterstützen visuelle Elemente. -Effekte und können auf verschiedenen Gerätemodellen eine Vielzahl von Formen darstellen. Wenn Sie mehr darüber erfahren möchten, wie Sie adaptive Symbole erstellen, siehe Adaptive Symbole .

Farbmanagement

Android-Entwickler von Imaging-Apps können jetzt die Vorteile neuer Geräte nutzen. die über ein breites Farbdisplay verfügen. Um die breite Palette anzuzeigen Bilder müssen Apps ein Flag in ihrem Manifest aktivieren (pro Aktivität). und Bitmaps mit einem eingebetteten breiten Farbprofil (AdobeRGB, Pro Photo RGB, DCI-P3 usw.).

WebView-APIs

Android 8.0 bietet mehrere APIs, die Ihnen bei der Verwaltung helfen. Die WebView-Objekte, die Webinhalte in Ihrer App anzeigen. Zu diesen APIs gehören die Folgendes:

  • API-Version
  • Google Safe Browsing-API
  • Beendigungs-Handle-API
  • Renderer-Wichtigkeits-API

Weitere Informationen zur Verwendung dieser APIs finden Sie unter WebViews verwalten

Die Klasse WebView enthält jetzt eine Safe Browsing API zur Verbesserung der Sicherheit des Surfens im Web. Weitere Informationen finden Sie unter Google Safe Browsing API:

Verknüpfungen und Widgets anpinnen

Mit Android 8.0 (API-Level 26) wird die Funktion zum Anpinnen von Verknüpfungen und Widgets. In Ihrer App können Sie angepinnte Verknüpfungen und Widgets für unterstützte Launcher, vorbehaltlich der Nutzerberechtigung.

Weitere Informationen finden Sie in der Verknüpfungen und Widgets anheften Leitfaden zu den Funktionen.

Maximales Bildschirmseitenverhältnis

Unter Android 8.0 (API-Level 26) ändert sich die Konfiguration des maximalen Seitenverhältnisses einer App.

Zunächst führt Android 8.0 die neue maxAspectRatio ein, das Sie mit dem du das maximale Seitenverhältnis für deine App festlegen kannst. Unter Android 8.0 und höher Das maximale Standardseitenverhältnis ist das native Seitenverhältnis auf dem Gerät, auf dem die App ausgeführt wird.

Weitere Informationen zum Deklarieren des maximalen Seitenverhältnisses finden Sie unter Unterstützung verschiedener Bildschirme.

Multi-Display-Unterstützung

Ab Android 8.0 (API-Level 26) bietet die Plattform mehrere Bildschirme unterstützt werden. Ob eine Aktivität den Mehrfenstermodus unterstützt und auf einem Gerät mit mehreren Bildschirmen ausgeführt wird, können Nutzer von einem Bildschirm zum anderen. Wenn eine App eine Aktivität startet, kann angeben, auf welchem Display die Aktivität ausgeführt werden soll.

Hinweis : Wenn bei einer Aktivität im Mehrfenstermodus aktiviert, Multi-Display-Unterstützung für diese Aktivität. Sie sollten Ihre App testen, ob sie in einer Multi-Display-Umgebung gut funktioniert.

Es kann immer nur eine Aktivität fortgesetzt werden, selbst wenn die App hat mehrere Displays. Die Aktivität mit Fokus befindet sich im fortgesetzten Zustand. Alle anderen sichtbaren Aktivitäten werden pausiert, aber nicht beendet. Weitere Informationen wenn mehrere Aktivitäten sichtbar sind. siehe Mehrfenstermodus Lebenszyklus:

Wenn ein Nutzer eine Aktivität von einer Anzeige auf eine andere verschiebt, passt die Größe der Aktivität an und führt bei Bedarf Laufzeitänderungen durch. Meine Aktivitäten die Konfigurationsänderung selbst übernehmen oder dem System den Prozess, der Ihre Aktivität enthält, zerstören und ihn mit dem neuen Dimensionen. Weitere Informationen finden Sie unter Konfiguration verwalten Änderungen.

ActivityOptions bietet zwei neue Methoden zur Unterstützung auf mehreren Displays:

setLaunchDisplayId()
Gibt an, auf welcher Anzeige die Aktivität nach dem Start angezeigt werden soll.
getLaunchDisplayId()
Gibt die aktuelle Startanzeige der Aktivität zurück.

Die ADB-Shell wurde erweitert, um mehrere Bildschirme zu unterstützen. Mit dem Befehl shell start kann jetzt eine Aktivität gestartet werden. und die Zielanzeige der Aktivität festlegen:

adb shell start <activity_name> --display <display_id>

Einheitliche Layoutränder und einheitlicher Abstand

Unter Android 8.0 (API-Level 26) ist es einfacher, Situationen anzugeben, in denen sich gegenüberliegende Seiten eines View-Elements denselben Rand oder Abstand haben. Konkret können Sie jetzt die folgenden Attribute in Ihrer Layout-XML-Datei verwenden. Dateien:

Hinweis:Wenn Sie die Logik Ihrer App so anpassen, unterstützen Sprachen und Kulturen, einschließlich der Textrichtung, bedenken Sie, haben keinen Einfluss auf die Werte <ph type="x-smartling-placeholder"></ph> layout_marginStart layout_marginEnd paddingStart oder paddingEnd. Sie können diese Werte zusätzlich zu die neuen vertikalen und horizontalen Layoutattribute, um das von der Textrichtung abhängt.

Zeigeraufnahme

Einige Apps wie Spiele, Remote Desktop und Virtualisierungsclients von Vorteil ist, wenn Sie mehr Kontrolle über den Mauszeiger erhalten. Die Zeigeraufnahme ist eine neue in Android 8.0 (API-Ebene 26), die eine solche Steuerung durch die Bereitstellung aller Mausereignisse ermöglicht. zur fokussierten Ansicht in Ihrer App.

Ab Android 8.0 kann ein View in deiner App Zeiger erfassen und einen Listener definieren, um erfasste Zeigerereignisse zu verarbeiten. Die Der Mauszeiger ist in diesem Modus ausgeblendet. Die Ansicht kann die Zeigeraufnahme loslassen wenn die Mausinformationen nicht mehr benötigt werden. Das System kann auch Zeigeraufnahme, wenn der Blick verloren geht, z. B. wenn der Nutzer die App öffnet eine andere App.

Informationen zur Verwendung dieser Funktion in deiner App findest du unter Zeigeraufnahme:

App-Kategorien

Unter Android 8.0 (API-Level 26) kann jede App eine passende Kategorie angeben in die Sie einfügen, wenn dies relevant ist. Mithilfe dieser Kategorien werden Anwendungen mit ähnlichen wenn Sie sie den Nutzern präsentieren, wie z. B. Datennutzung, Akkunutzung oder Speichernutzung. Sie können eine Kategorie für Ihre App festlegen, indem Sie die Attribut android:appCategory in Ihrem <application> Manifest-Tag enthält.

Android TV Launcher

Android 8.0 (API-Level 26) enthält eine neue inhaltsorientierte, Startbildschirm von Android TV, verfügbar mit den Android TV-Emulator und Nexus Player-Geräte-Image für Android 8.0. Auf dem neuen Startbildschirm Videocontent in Zeilen für Kanäle, die jeweils mit Programmen einer App auf System. Apps können mehrere Kanäle veröffentlichen und Nutzer können festlegen, welche Kanäle sie die Sie auf dem Startbildschirm sehen möchten. Der Android TV-Startbildschirm enthält auch die Zeile „Als Nächstes ansehen“, mit Programmen aus Apps gefüllt, basierend auf den Sehgewohnheiten des Nutzers. Apps können auch Videovorschauen, die automatisch abgespielt werden, wenn sich ein Nutzer auf ein Programm konzentriert. Die APIs für Kanäle und Programme sind Teil der TvProvider-APIs, die als Android-Entwickler Modul für die Unterstützung der Bibliothek unter Android 8.0.

Animationsset

Ab Android 8.0 (API-Level 26) unterstützt die AnimatorSet API jetzt das Suchen und Spielen in umgekehrt. Mit der Suchfunktion können Sie die Position der Animation auf einen bestimmten zu einem bestimmten Zeitpunkt. Dies ist nützlich, wenn deine App Animationen enthält für Aktionen, die rückgängig gemacht werden können. Anstatt zwei separate Animationen kannst du dasselbe beliebig rückwärts spielen.

Eingabe und Navigation

Tastaturnavigations-Cluster

Wenn eine Aktivität in Ihrer App eine komplexe Ansichtshierarchie verwendet, wie die in Abbildung 2: Sie können Gruppen von UI-Elementen zur Vereinfachung in Clustern organisieren. Tastaturnavigation auswählen. Nutzer können Meta + Tabulatortaste oder Suche + Tabulatortaste drücken Mit Chromebook-Geräten können Sie von einem Cluster zum anderen wechseln. Gute Beispiele für Cluster umfassen: Seitenleisten, Navigationsleisten, Hauptinhaltsbereiche und Elemente die viele untergeordnete Elemente enthalten kann.

<ph type="x-smartling-placeholder">
</ph> Eine Beispielaktivität mit fünf Navigationsclustern, die der Nutzer
  mit der Tastenkombination für den Tastaturnavigationscluster navigieren können. Cluster
  in der folgenden Anordnung angezeigt werden: oberes Steuerfeld, linke Seitenleiste, Hauptinhalt
  das untere Steuerfeld und die unverankerte Aktionsschaltfläche.
Abbildung 2: Aktivität mit 5 Navigationselementen Cluster

So erstellen Sie ein View- oder ViewGroup-Element: einen Cluster, legen Sie den <ph type="x-smartling-placeholder"></ph> android:keyboardNavigationCluster für true in der Layout-XML-Datei des Elements oder übergeben Sie true in der UI-Logik deiner App in setKeyboardNavigationCluster() einfügen.

Hinweis:Cluster können nicht verschachtelt werden, obwohl sie nicht verschachtelt sind. Cluster können auf verschiedenen Hierarchieebenen erscheinen. Wenn Sie versuchen, Cluster verschachteln, behandelt das Framework nur die ViewGroup-Element als Cluster.

Auf Geräten mit Touchscreens können Sie einen Cluster ViewGroup-Objekt android:touchscreenBlocksFocus-Element auf true um Nur Cluster-Navigation in und aus dem Cluster zulassen. Wenn Sie diese Konfiguration auf einen Cluster übertragen, können Nutzer nicht mit der Tabulatortaste oder den Pfeiltasten in den Cluster oder aus dem Cluster wechseln; muss er die Cluster-Navigation Tastenkombination verwenden.

Standardfokus ansehen

In Android 8.0 (API-Level 26) kannst du die View zuweisen, die wieder in den Fokus rücken, nachdem eine (neu) erstellte Aktivität fortgesetzt wird und die Nutzenden Tastaturnavigationstaste, z. B. Tabulatortaste. Um diese Einstellung auf „Standardmäßig fokussiert“ anzuwenden eines View-Elements festlegen, <ph type="x-smartling-placeholder"></ph> android:focusedByDefault-Attribut true in der Layout-XML-Datei mit dem UI-Element oder übergeben Sie true an setFocusedByDefault() in deinem die UI-Logik der App.

Sprachausgabe

Aktivitäten und Dienstleistungen können Instanzen von TextToSpeech, um Inhalte zu diktieren und auszusprechen. Ab Unter Android 8.0 (API-Level 26) kann deine App präzisere Zeitinformationen abrufen wann eine Sprachausgabe-Engine einzelne synthetisierte Wörter spricht, solange die Suchmaschine diese Informationen bereitstellt. Mit dieser Funktion können Sie um die Aufmerksamkeit auf bestimmte Wörter zu lenken, während die Sprachausgabe-Engine spricht .

Um diese Verbesserungen für die Sprachausgabe-Funktion in Ihrer App zu verwenden, registrieren Sie eine Instanz von UtteranceProgressListener. Im Rahmen des Registrierungsprozess, fügen Sie einen Handler für die onRangeStart() .

Die Sprachausgabe-Engine ruft auf, rangeStart() zum Aufnehmen Den Zeitpunkt, zu dem die Audiowiedergabe eines bestimmten Textbereichs erwartet wird um zu beginnen. Wenn die Audiowiedergabe für diesen Textbereich beginnt, wird der Titel der App onRangeStart() ausgeführt wird. Ihre App kann dann auf diesen Callback reagieren, z. B. durch den Textbereich markiert, der der Äußerung zugeordnet ist.

Weitere Informationen zum Verfolgen des Wiedergabefortschritts einer Sprachausgabe UtteranceProgressListener-Klasse ansehen Referenz.

System

Neue StrictMode-Detektoren

Unter Android 8.0 (API-Ebene 26) werden drei neue StrictMode-Detektoren hinzugefügt, mit denen Sie potenzielle Fehler in deiner App:

Daten im Cache

Android 8.0 (API-Level 26) bietet bessere Anleitungen und Verhaltensweisen im Zusammenhang mit im Cache gespeicherten Daten. Jedes App erhält nun ein Speicherplatzkontingent für zwischengespeicherte Daten, wie von getCacheQuotaBytes(UUID)

Wenn das System Speicherplatz freigeben muss, beginnt es damit, im Cache gespeicherte Dateien aus Apps zu löschen die ihr zugewiesenes Kontingent am stärksten übersteigen. Wenn Sie also die Daten im Cache unter Ihrem zugewiesenes Kontingent gehören, gehören Ihre im Cache gespeicherten Dateien zu den letzten Dateien im System, die gelöscht werden müssen, notwendig ist. Wenn das System entscheidet, welche im Cache gespeicherten Dateien in Ihrer App gelöscht werden sollen, Die ältesten Dateien werden zuerst berücksichtigt (basierend auf der Änderungszeit).

Außerdem gibt es zwei neue Verhaltensweisen, die du pro Verzeichnis aktivieren kannst. wie das System im Cache gespeicherte Daten freigibt:

  • Mit StorageManager.setCacheBehaviorAtomic() kann angegeben werden, dass ein Verzeichnis und sein gesamter Inhalt als eine einzelne atomare Einheit gelöscht werden sollen.
  • Mit setCacheBehaviorTombstone(File, boolean) kann angegeben werden, dass Dateien in einem Verzeichnis nicht gelöscht werden, sondern auf 0 Byte im Die leere Datei bleibt unverändert.

Wenn Sie Speicherplatz für große Dateien zuweisen müssen, erwägen Sie die Verwendung der neuen allocateBytes(FileDescriptor, long) API, die automatisch gelöscht wird im Cache gespeicherte Dateien anderer Apps (falls erforderlich), um Ihrer Anfrage nachzukommen. Wenn Sie entscheiden, über genügend Speicherplatz für Ihre neuen Daten verfügt, rufen Sie getAllocatableBytes(UUID) statt zu verwenden getUsableSpace(), da hier alle im Cache gespeicherten Daten berücksichtigt werden. Daten, die das System für Sie löschen möchte.

Paging des Contentanbieters

Wir haben Content-Provider aktualisiert, um Unterstützung für das Laden einer großen Seite für Seite zu bearbeiten. Eine Foto-App mit Tausenden von Bilder können eine Teilmenge der Daten abfragen, die auf einer Seite angezeigt werden sollen. Jede Seite der von einem Contentanbieter zurückgegebenen Ergebnisse werden durch einen einzelnen Cursor dargestellt. -Objekt enthält. Sowohl ein Client als auch ein Anbieter müssen Paging implementieren, um für diese Funktion.

Detaillierte Informationen zu den Änderungen bei Contentanbietern finden Sie unter ContentProvider und ContentProviderClient.

Anfragen zur Aktualisierung von Inhalten

Die ContentProvider und ContentResolver Klassen enthalten jetzt jeweils einen refresh()-Methode, mit der Kunden leichter erkennen können, die angeforderten Informationen auf dem neuesten Stand sind.

Sie können benutzerdefinierte Logik zur Aktualisierung von Inhalten hinzufügen, indem Sie ContentProvider Achten Sie darauf, die refresh()-Methode für die Rückgabe true und zeigt den Kunden deines Anbieters an, dass du versucht hast, um die Daten selbst zu aktualisieren.

Ihre Client-App kann durch Aufrufen einer eine andere Methode, die auch als refresh() Wenn Sie diese Methode aufrufen, den URI der zu aktualisierenden Daten übergeben.

Hinweis:Da Sie möglicherweise Daten über ein Netzwerk anfordern, sollten Sie refresh() aus Clientseite nur dann angezeigt, wenn es deutliche Hinweise darauf gibt, dass der Inhalt veraltet ist. Der häufigste Grund für diese Art der Inhaltsaktualisierung ist eine Reaktion auf zum Aktualisieren wischen Touch-Geste, mit der explizit die aktuelle Benutzeroberfläche angefordert wird, um den aktuellen Inhalt anzuzeigen.

JobScheduler-Verbesserungen

Android 8.0 (API-Level 26) enthält eine Reihe von Verbesserungen für JobScheduler. Diese Verbesserungen erleichtern deine App um dem neuen Hintergrund Ausführungslimits, da Sie geplante Jobs in der Regel die jetzt eingeschränkten Hintergrunddienste oder implizite Übertragungsempfänger verwenden.

Zu den Aktualisierungen für JobScheduler gehören:

  • Sie können jetzt einem geplanten Auftrag eine Arbeitswarteschlange zuordnen. So fügen Sie eine Aufgabe hinzu: in die Warteschlange eines Jobs, rufen Sie JobScheduler.enqueue() Wenn der Job ausgeführt wird, können ausstehende Arbeiten aus der Warteschlange entfernt und verarbeitet werden. Diese Funktion eignet sich für viele der Anwendungsfälle, einen Hintergrunddienst starten, insbesondere Dienste, IntentService
  • Android Die Support Library 26.0.0 führt eine neue JobIntentService-Klasse ein, die die gleichen als IntentService, verwendet jedoch Jobs anstelle von wenn sie unter Android 8.0 (API-Level 26) oder höher laufen.
  • Sie können jetzt anrufen JobInfo.Builder.setClipData() um eine ClipData mit einem Job zu verknüpfen. Mit dieser Option wird URI-Berechtigungserteilungen mit einem Job zu verknüpfen, ähnlich wie diese Berechtigungen können an Context.startService() weitergegeben werden. Sie können URI-Berechtigungserteilungen auch mit Intents verwenden in Arbeitswarteschlangen.
  • Geplante Jobs unterstützen jetzt mehrere neue Einschränkungen: <ph type="x-smartling-placeholder">
    </ph>
    JobInfo.isRequireStorageNotLow()
    Der Job wird nicht ausgeführt, wenn auf dem Gerät nur noch wenig Speicherplatz verfügbar ist.
    JobInfo.isRequireBatteryNotLow()
    Der Job wird nicht ausgeführt, wenn der Akkustand den kritischen Wert erreicht oder unterschreitet Grenzwert Dies ist der Akkustand, bei dem das Gerät den Niedrigen Akkustand anzeigt. Warnung im Systemdialogfeld.
    NETWORK_TYPE_METERED
    Job erfordert eine kostenpflichtige Netzwerkverbindung, wie die meisten mobilen Daten Abos.

Benutzerdefinierter Datenspeicher

Unter Android 8.0 (API-Level 26) können Sie Ihren Einstellungen einen benutzerdefinierten Datenspeicher bereitstellen, der nützlich, wenn Ihre App die Einstellungen in einer Cloud oder lokalen Datenbank speichert oder wenn die Einstellungen gerätespezifisch sind. Weitere Informationen zu Implementierung des Datenspeichers finden Sie Benutzerdefinierter Datenspeicher.

Medienverbesserungen

VolumeShaper

Es gibt eine neue VolumeShaper-Klasse. Verwenden Sie kurze automatische Lautstärkeübergänge wie Über- und Überblendungen. Siehe Amplitude mit VolumeShaper steuern um mehr zu erfahren.

Verbesserter Audiofokus

Audio-Apps teilen die Audioausgabe mit einem Gerät, indem sie den Audiofokus anfordern und verwerfen. Eine App verarbeitet Änderungen im Fokus, indem sie die Wiedergabe startet oder beendet oder die Lautstärke verringert. Es gibt eine neue AudioFocusRequest-Klasse. Die Verwendung dieser Klasse als Parameter von requestAudioFocus(), Apps haben neue Funktionen für den Umgang mit Änderungen des Audiofokus: Automatic Ducking und verzögerter Fokuszuwachs.

Medienmesswerte

Eine neue getMetrics()-Methode gibt PersistableBundle zurück. Objekt, das die Konfiguration enthält und Leistungsinformationen in Form einer Zuordnung von Attributen und Werten. Die Methode getMetrics() ist für diese Medienklassen definiert:

Messwerte werden für jede Instanz separat erfasst und bleiben für die Lebensdauer der Instanz. Wenn keine Messwerte verfügbar sind, gibt die Methode null. Die tatsächlich zurückgegebenen Messwerte hängen von der Klasse ab.

MediaPlayer

Ab Android 8.0 (API-Ebene 26) kann MediaPlayer wiedergegeben werden. DRM-geschützt und verschlüsselte Medien mit HLS-Sampleebene.

Android 8.0 bringt eine neue Überlastung seekTo()-Befehl, der eine detailgenaue wenn Sie zu einem Frame springen. Es enthält einen zweiten Parameter, der einen Suchmodus angibt:

  • SEEK_PREVIOUS_SYNC verschiebt die Medienposition in einen Synchronisierungs- oder Schlüsselframe die mit einer Datenquelle verknüpft ist, die sich direkt vor oder zum angegebenen Zeitpunkt befindet.
  • SEEK_NEXT_SYNC verschiebt die Medienposition zu einem Synchronisierungs- oder Schlüsselframe, der dem mit einer Datenquelle, die sich direkt nach oder zum angegebenen Zeitpunkt befindet.
  • SEEK_CLOSEST_SYNC verschiebt die Medienposition in einen Synchronisierungs- oder Schlüsselframe die mit einer Datenquelle verknüpft ist, die sich zum angegebenen Zeitpunkt am nächsten befindet.
  • SEEK_CLOSEST verschiebt die Medienposition in einen Frame (nicht unbedingt eine Synchronisierung oder Keyframe), die mit einer Datenquelle verknüpft sind, die sich am nächsten zu einem bestimmten Zeitpunkt.

Bei fortlaufender Suche sollten Apps einen der SEEK_-Modi anstelle des SEEK_CLOSEST-Modus verwenden, der relativ langsamer läuft, aber genauer sein kann.

Medienrekorder

  • MediaRecorder unterstützt jetzt das MPEG2_TS-Format, das für Streaming:

    Kotlin

    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS)
    

    Java

    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS);
    

    Siehe MediaRecorder.OutputFormat

  • Das MediaMuxer kann jetzt beliebig viele Audio- und Videostreams verarbeiten. Keine Beschränkung mehr zu einem Audiotrack und/oder einem Videotrack. addTrack() verwenden um beliebig viele Titel zu mischen.
  • MediaMuxer kann auch einen oder mehrere Metadatentracks hinzufügen, die benutzerdefinierte pro Frame enthalten. Informationen. Das Format der Metadaten wird von Ihrer Anwendung festgelegt. Die Metadaten-Track wird nur für MP4-Container unterstützt.

Metadaten können für die Offlineverarbeitung nützlich sein. Zum Beispiel Gyroskopsignale kann der Sensor zur Videostabilisierung verwendet werden.

Beim Hinzufügen eines Metadatentitels muss das MIME-Format des Titels mit dem Präfix beginnen „application/“ an. Das Schreiben von Metadaten entspricht dem Schreiben von Video-/Audiodaten, mit folgenden Ausnahmen: dass die Daten nicht aus einem MediaCodec stammen. Stattdessen gibt die App eine ByteBuffer mit einem zugehörigen Zeitstempel für den writeSampleData()-Methode. Der Zeitstempel muss dieselbe Zeitbasis haben wie die Video- und Audiotracks.

In der generierten MP4-Datei wird die im Abschnitt definierte TextMetaDataSampleEntry verwendet 12.3.3.2 des ISOBMFF zum Signalisieren des MIME-Formats der Metadaten. Wenn Sie MediaExtractor zum Extrahieren der Datei mit dem Metadatentrack verwenden, wird der MIME-Typ Format der Metadaten wird in MediaFormat extrahiert.

Verbesserter Zugriff auf Mediendateien

Die <ph type="x-smartling-placeholder"></ph> Storage Access Framework (SAF) ermöglicht Apps die Bereitstellung eines benutzerdefinierten DocumentsProvider, die Zugriff auf Dateien gewähren kann in einer Datenquelle mit anderen Apps zu verknüpfen. Tatsächlich kann der Dokumentenanbieter sogar die sich im Netzwerk befinden oder ein Protokoll wie Media Transfer Protocol (MTP):

Der Zugriff auf große Mediendateien aus einer Remote-Datenquelle Herausforderungen:

  • Mediaplayer benötigen einen suchbaren Zugriff auf eine Datei von einem Dokumentanbieter. In Fällen, in denen sich eine große Mediendatei in einer Remote-Datenquelle befindet, Der Dokumentenanbieter muss alle Daten im Voraus abrufen und einen Snapshot erstellen Datei-Deskriptor. Der Mediaplayer kann die Datei nicht ohne sie wiedergeben. Beschreibung, sodass die Wiedergabe erst beginnen kann, wenn der Dokumentanbieter den Vorgang abgeschlossen hat. die Datei herunterladen.
  • Manager von Mediensammlungen wie z. B. Foto-Apps müssen eine Reihe von Zugriffs-URIs, um Medien zu erreichen, die auf einer externen SD-Karte über einen Ordner. Dieses Zugriffsmuster ermöglicht Massenoperationen auf Medien wie Verschieben, Kopieren und Löschen – ziemlich langsam.
  • Manager von Mediensammlungen können den Speicherort eines Dokuments nicht bestimmen, URI. Dadurch ist es für diese Arten von Apps schwierig, Nutzern wo eine Mediendatei gespeichert wird.

Android 8.0 löst diese Herausforderungen durch einen verbesserten Speicherzugriff Framework.

Anbieter benutzerdefinierter Dokumente

Ab Android 8.0 ermöglicht das Storage Access Framework benutzerdefinierte Dokumente zum Erstellen suchbarer Dateideskriptoren für Dateien in einem Remote-Datenquelle. Die SAF kann eine Datei öffnen, um eine nativ suchbare Datei abzurufen Beschreibung. Die SAF liefert dann diskrete Byteanfragen an die Dokumente. Dienstanbieter. Mit dieser Funktion kann ein Dokumentanbieter den genauen Bereich der von einer Mediaplayer-App angeforderten Byte an, anstatt den gesamten im Voraus zu erstellen.

Um diese Funktion zu nutzen, müssen Sie die neue StorageManager.openProxyFileDescriptor()-Methode. Die Die Methode openProxyFileDescriptor() akzeptiert ein ProxyFileDescriptorCallback-Objekt als Callback. Die SAF ruft den Callback jedes Mal, wenn eine Client-Anwendung Dateivorgänge auf der Der vom Dokumentanbieter zurückgegebene Dateideskriptor.

Direkter Zugriff auf Dokumente

Ab Android 8.0 (API-Level 26) kannst du die getDocumentUri()-Methode für URI abrufen, der auf dasselbe Dokument wie die angegebene mediaUri verweist. Da der zurückgegebene URI jedoch von einem DocumentsProvider, Manager von Mediensammlungen haben Zugriff direkt in das Dokument, ohne dass Sie Baumstrukturen von bereichsbezogenen Verzeichnissen durchsuchen müssen. Dadurch können die Medienmanager Dateivorgänge für das Dokument durchführen. erheblich schneller.

Achtung:Mit der Methode getDocumentUri() können nur Mediendateien gesucht werden. werden Apps nicht mit der auf diese Dateien zugreifen dürfen. Weitere Informationen dazu, wie Sie Zugriff erhalten Berechtigung für Mediendateien finden Sie in der Referenzdokumentation.

Pfade zu Dokumenten

Wenn Sie das Storage Access Framework in Android 8.0 (API-Level 26) verwenden, können Sie die Methode findDocumentPath(), in beiden verfügbar DocumentsContract und DocumentsProvider Klassen, um den Pfad vom Stammverzeichnis eines Dateisystems anhand der ID. Die Methode gibt diesen Pfad in einem DocumentsContract.Path-Objekt. Wenn eine Datei mehrere definierte Pfade zum selben Dokument hat, gibt die Methode den Fehlerwert Pfad, der am häufigsten verwendet wird, um das Dokument mit der angegebenen ID zu erreichen.

Diese Funktion ist in den folgenden Szenarien besonders nützlich:

  • Ihre App verwendet ein Speichern unter in dem der Standort eines für ein bestimmtes Dokument.
  • Deine App zeigt Ordner in einer Suchergebnisansicht an und das untergeordnete Element muss geladen werden die sich in einem bestimmten Ordner befinden, wenn der Nutzer Ordner.

Hinweis:Wenn Ihre App nur auf einige der Dokumente zugreifen darf, im Pfad enthält der Rückgabewert von findDocumentPath() nur Ordner und Dokumente, auf die Ihre App zugreifen kann.

Überwachen der Audiowiedergabe

Der AudioManager-Systemdienst verwaltet eine Liste mit aktive AudioPlaybackConfiguration-Objekte, von denen jedes enthält Informationen zu einer bestimmten Audiowiedergabesitzung. Ihre App kann rufen Sie den Satz derzeit aktiver Konfigurationen ab, indem Sie getActivePlaybackConfigurations()

Ab Android 8.0 (API-Level 26) kannst du einen Callback registrieren, der Ihrer App, wenn eines oder mehrere AudioPlaybackConfiguration Objekte wurden geändert. Gehen Sie dazu wie folgt vor: registerAudioPlaybackCallback() aufrufen und eine Instanz von AudioManager.AudioPlaybackCallback. Die Die Klasse AudioManager.AudioPlaybackCallback enthält die onPlaybackConfigChanged()-Methode, die das System aufruft, wenn die Änderungen der Wiedergabekonfiguration.

Konnektivität

WLAN-fähig

Android 8.0 (API-Level 26) unterstützt Wi-Fi Aware, das auf dem Nachbarn basiert NAN-Spezifikation (Awareness Networking). Auf Geräten mit der entsprechenden Wi-Fi Aware-Hardware, Apps und Geräte in der Nähe können die Geräte erkennen und kommunizieren über WLAN ohne Internetzugang. Wir arbeiten mit unserer Hardware -Partner so bald wie möglich auf ihre Geräte mit Wi-Fi Aware-Technologie umstellen. Für Informationen zum Einbinden von Wi-Fi Aware in Ihre App finden Sie unter Wi-Fi Aware.

Bluetooth

Android 8.0 (API-Level 26) erweitert die Bluetooth-Unterstützung der Plattform durch Folgendes: Funktionen:

  • Unterstützung für den Standard AVRCP 1.4, der das Durchsuchen von Mediatheken ermöglicht
  • Unterstützung des BLE-5.0-Standards (Bluetooth Low Energy)
  • Integration des Sony LDAC-Codecs in den Bluetooth-Stack.

Begleitgerät koppeln

Android 8.0 (API-Ebene 26) bietet APIs, mit denen Sie die Dialogfeld für Kopplungsanfrage beim Koppeln mit Begleitgeräten über Bluetooth, BLE und WLAN Weitere Informationen finden Sie unter Begleitgerät Kopplung.

Weitere Informationen zur Verwendung von Bluetooth unter Android finden Sie in der Informationen zu Bluetooth Für Änderungen an Bluetooth für Android 8.0 (API-Level 26) finden Sie in den Bluetooth der Seite zu Verhaltensänderungen unter Android 8.0

Inhalte teilen

Intelligentes Teilen

Android 8.0 (API-Level 26) lernt personalisiertes Teilen Präferenzen und ein besseres Verständnis für die einzelnen Inhaltstypen, Apps zum Teilen. Macht ein Nutzer ein Foto von einem Beleg, 8.0 eine App zur Spesenabrechnung vorschlagen kann; nimmt der Nutzer ein Selfie auf, App das Bild besser verarbeiten kann. Android 8.0 lernt all das Mustern, die sich an den personalisierten Präferenzen.

Das intelligente Teilen funktioniert bei anderen Inhaltstypen als image, z. B. audio, video, text, URL usw.

Wenn du die Funktion „Intelligentes Teilen“ aktivieren möchtest, füge bis zu drei ArrayList hinzu Stringanmerkungen zum Intent, der den Inhalt teilt. Die Anmerkungen sollten die Hauptkomponenten oder -themen in den Inhalten beschreiben. Das folgende Codebeispiel zeigt, wie Sie dem Intent Anmerkungen hinzufügen:

Kotlin

val annotations: ArrayList<String> = arrayListOf(
        "topic1",
        "topic2",
        "topic3"
)

intent.putStringArrayListExtra(
        Intent.EXTRA_CONTENT_ANNOTATIONS,
        annotations
)

Java

ArrayList<String> annotations = new ArrayList<>();

annotations.add("topic1");
annotations.add("topic2");
annotations.add("topic3");

intent.putStringArrayListExtra(
    Intent.EXTRA_CONTENT_ANNOTATIONS,
    annotations
);

Weitere Informationen zu intelligenten Anmerkungen zum Teilen findest du unter EXTRA_CONTENT_ANNOTATIONS

Textklassifikator

Auf kompatiblen Geräten können Apps mit einem neuen Textklassifikator prüfen, ob ein String entspricht einem bekannten Klassifikator-Entitätstyp und es wird eine Auswahl vorgeschlagen Alternativen. Zu den vom System erkannten Entitäten gehören Adressen, URLs, Telefonnummern und E-Mail-Adressen. Weitere Informationen finden Sie unter TextClassifier

Bedienungshilfen

Android 8.0 (API-Level 26) unterstützt mehrere neue Bedienungshilfen für Entwickler, die ihre eigenen Bedienungshilfen erstellen:

Weitere Informationen zur Verbesserung der Barrierefreiheit Ihrer App Weitere Informationen finden Sie unter Bedienungshilfen.

Sicherheit und Datenschutz

Berechtigungen

Mit Android 8.0 (API-Level 26) werden mehrere neue Berechtigungen im Zusammenhang mit Telefonie eingeführt:

Diese Berechtigungen sind klassifiziert als gefährlich und sind beide Teil des PHONE Berechtigungsgruppe.

Neue APIs für den Kontozugriff und Discovery-APIs

Android 8.0 (API-Level 26) enthält einige Verbesserungen Apps Zugriff auf Nutzerkonten erhalten. Für die von ihm verwalteten Konten Authenticatoren können anhand ihrer eigenen Richtlinien entscheiden, oder Konten für eine App offenlegen. Das Android-System erfasst Anwendungen, die auf ein bestimmtes Konto zugreifen.

In früheren Android-Versionen waren Apps, die die Liste der Nutzerkonten mussten Updates für alle Konten erhalten, einschließlich Konten mit nicht miteinander verwandt sind. Android 8.0 bietet addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[]) Methode, mit der Apps eine Liste von Kontotypen angeben können für die Kontoänderungen empfangen werden sollen.

API-Änderungen

AccountManager bietet sechs neue Methoden, mit denen die Apps können auf ein Konto zugreifen:

Mit Android 8.0 (API-Level 26) werden zwei spezielle Paketnamenwerte eingeführt, um die Sichtbarkeit anzugeben für Anwendungen festzulegen, die nicht mit der setAccountVisibility(android.accounts.Account, java.lang.String, int) . Die PACKAGE_NAME_KEY_LEGACY_VISIBLE wird der Sichtbarkeitswert auf Apps angewendet, GET_ACCOUNTS und Zielversionen Android 8.0 oder älter als Android 8.0 Signaturen mit dem Authenticator für jede Android-Version übereinstimmen. PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE einen Standard-Sichtbarkeitswert für Apps, die noch nicht festgelegt wurden und für die PACKAGE_NAME_KEY_LEGACY_VISIBLE ist nicht zutreffend sind.

Weitere Informationen zu den neuen APIs für Kontozugriff und Erkennung finden Sie in der Referenz für AccountManager und OnAccountsUpdateListener.

Testen

Instrumentierungstests

Android 8.0 (API-Level 26) bietet folgende zusätzliche Unterstützung für den Instrumentierungstests.

Für nicht standardmäßige App-Prozesse ausführen

Sie können jetzt festlegen, dass ein bestimmter Instrumentierungstest für einen Prozess außerhalb des Standardprozesses Ihrer App. Diese Konfiguration ist nützlich, wenn Ihre App mehrere Aktivitäten enthält, die in verschiedenen Prozessen ausgeführt werden.

Rufe dein Manifest auf, um eine nicht standardmäßige Prozessinstrumentierung zu definieren und dann zum gewünschten <ph type="x-smartling-placeholder"></ph> <instrumentation>-Element. Fügen Sie den android:targetProcess-Attribut und legen Sie seinen Wert auf einen der folgenden Werte fest: Folgendes:

  • Der Name eines bestimmten Prozesses.
  • Eine durch Kommas getrennte Liste von Prozessnamen.
  • Einen Platzhalter ("*"), mit dem die Instrumentierung ausgeführt werden kann jeden gestarteten Prozess, der Code in dem Paket ausführt, Das Attribut android:targetPackage

Während der Instrumentierungstest ausgeführt wird, können Sie prüfen, welcher Prozess durch Aufrufen von getProcessName().

Ergebnisse während eines Tests melden

Sie können jetzt Ergebnisse melden, während der Instrumentierungstest ausgeführt wird. statt danach, indem Sie addResults() aufrufen.

Intents für Tests simulieren

Um es einfacher zu machen, isolierte, unabhängige UI-Tests für die werden mit Android 8.0 (API-Level 26) onStartActivity()-Methode. Sie überschreiben diese Methode in einer benutzerdefinierten Unterklasse der Instrumentation.ActivityMonitor zur Verarbeitung einer bestimmten Intent erstellt, den die Testklasse aufruft.

Wenn die Testklasse den Intent aufruft, gibt die Methode einen Stub zurück. Instrumentation.ActivityResult-Objekt, anstatt es auszuführen den Intent selbst. Wenn Sie diese simulierte Intent-Logik in Ihren Tests verwenden, wie sich Ihre Aktivität auf den Intent vorbereitet, den Sie an einen Aktivitäten oder eine ganz andere App.

Laufzeit und Werkzeuge

Plattformoptimierungen

Android 8.0 (API-Level 26) bringt Laufzeit- und andere Optimierungen auf der Plattform, zu einer Reihe von Leistungsverbesserungen führen. Zu diesen Optimierungen gehören die automatische Verdichtung der automatischen Speicherbereinigung, Speicher effizienter nutzen und den Code gespeichert haben.

Diese Optimierungen führen zu kürzeren Startzeiten und einer besseren Leistung sowohl in der Betriebssystem und Apps

Aktualisierte Java-Sprachunterstützung

Android 8.0 (API-Ebene 26) unterstützt mehrere zusätzliche OpenJDK Java APIs:

Weitere Informationen zu den Klassen und Methoden in diesen neu hinzugefügten finden Sie in der API-Referenzdokumentation.

Wenn Sie Java 8-Sprachfunktionen in Android Studio verwenden, sollten Sie neueste Vorschauversion herunterladen.

Aktualisierte ICU4J Android Framework APIs

Android 8.0 (API-Level 26) erweitert die ICU4J-Android-Framework APIs, eine Teilmenge der ICU4J APIs, mit denen App-Entwickler android.icu-Paket verwenden. Diese APIs verwenden Lokalisierungsdaten auf dem Gerät vorhanden ist. Sie können Ihre APK-Datei also reduzieren, indem Sie das ICU4J-Bibliotheken in Ihre APK-Datei.

Tabelle 1 Verwendete ICU-, CLDR- und Unicode-Versionen in Android.

Android-API-Level ICU-Version CLDR-Version Unicode-Version
Android 7.0 (API-Level 24), Android 7.1 (API-Level 25) 56 28 8.0
Android 8.0 (API-Level 26) 58,2 30.0.3 9.0

Weitere Informationen zur Internationalisierung unter Android, darunter ICU4J-Unterstützung, siehe Internationalisierung auf Android-Geräten

Android Enterprise

Es wurden neue Unternehmensfunktionen und APIs für Geräte eingeführt, auf denen Android 8.0 (API-Level 26) Zu den Highlights gehören:

  • Mit Arbeitsprofilen auf vollständig verwalteten Geräten können Unternehmen personenbezogenen Daten und die Verwaltung von beidem.
  • Über die API-Delegierung können Geräte- und Profilinhaber Apps zuweisen auf andere Anwendungen übertragen.
  • Die Nutzerfreundlichkeit des Bereitstellungsablaufs wurde verbessert (z. B. neue Anpassungsoptionen) die Einrichtungszeit reduzieren.
  • Dank neuer Einstellungen für Bluetooth, WLAN, Sicherung und Sicherheit können Unternehmen mehr Geräte verwalten können. Mit dem Logging von Netzwerkaktivitäten können Unternehmen Störungen.

Wenn Sie mehr über diese und andere neue Android Enterprise-APIs und -Funktionen erfahren möchten, Siehe Android im Unternehmen.