Android 15 bietet tolle Funktionen und APIs für Entwickler. In den folgenden Abschnitten werden diese Funktionen zusammengefasst, um Ihnen den Einstieg in die zugehörigen APIs zu erleichtern.
Eine detaillierte Liste der hinzugefügten, geänderten und entfernten APIs finden Sie im API-Diff-Bericht. Weitere Informationen zu den hinzugefügten APIs finden Sie in der Android API-Referenz. Suchen Sie bei Android 15 nach APIs, die in API-Level 35 hinzugefügt wurden. Informationen dazu, in welchen Bereichen sich Plattformänderungen auf Ihre Apps auswirken können, finden Sie in den Artikeln zu Änderungen am Verhalten von Android 15 für Apps, die auf Android 15 ausgerichtet sind und Änderungen am Verhalten von Android 15 für alle Apps.
Kamera und Medien
Android 15 bietet eine Vielzahl von Funktionen, die die Kamera- und Mediennutzung verbessern und Ihnen Zugriff auf Tools und Hardware geben, mit denen Creator ihre Ideen auf Android-Geräten umsetzen können.
Weitere Informationen zu den neuesten Funktionen und Entwicklerlösungen für Android-Medien und -Kameras finden Sie im Vortrag Moderne Android-Medien- und Kamerafunktionen entwickeln von der Google I/O.
Modus für wenig Licht
Mit Android 15 wird die Optimierung bei wenig Licht eingeführt, ein neuer Modus für die automatische Belichtung, der sowohl für Kamera 2 als auch für die Kameraerweiterung für den Nachtmodus verfügbar ist. Mit der Funktion „Verstärkung bei wenig Licht“ wird die Belichtung des Vorschaustreams bei schwachem Licht angepasst. Dies unterscheidet sich von der Art und Weise, wie mit der Nachtmodus-Kameraerweiterung Standbilder erstellt werden, da der Nachtmodus eine Reihe von Fotos zu einem einzigen, verbesserten Bild kombiniert. Der Nachtmodus eignet sich zwar sehr gut zum Erstellen von Standbildern, er kann jedoch keinen fortlaufenden Stream von Frames erzeugen, die Optimierung bei wenig Licht hingegen schon. Dadurch ermöglicht die Optimierung bei wenig Licht neue Kamerafunktionen, z. B.:
- Sie bieten eine optimierte Bildvorschau, damit Nutzer Bilder bei schlechten Lichtverhältnissen besser einordnen können.
- QR-Codes bei wenig Licht scannen
Wenn Sie „Optimierung bei wenig Licht“ aktivieren, wird sie bei wenig Licht automatisch aktiviert und bei mehr Licht wieder ausgeschaltet.
Apps können bei schlechten Lichtverhältnissen aus dem Vorschaustream aufzeichnen, um ein helleres Video zu speichern.
Weitere Informationen finden Sie unter Verstärkung bei wenig Licht.
Kamerasteuerung in der App
Unter Android 15 wird eine neue Erweiterung hinzugefügt, mit der Sie die Kamerahardware und ihre Algorithmen auf unterstützten Geräten besser steuern können:
- Erweiterte Anpassungen der Blitzstärke ermöglichen eine präzise Steuerung der Blitzintensität im
SINGLE
- undTORCH
-Modus während der Aufnahme.
HDR-Headroom-Steuerung
Unter Android 15 wird ein HDR-Toleranzbereich ausgewählt, der den zugrunde liegenden Gerätefunktionen und der Bittiefe des Panels entspricht. Bei Seiten mit vielen SDR-Inhalten, z. B. einer Messaging-App mit einer einzelnen HDR-Miniaturansicht, kann sich dieses Verhalten negativ auf die wahrgenommene Helligkeit der SDR-Inhalte auswirken. Unter Android 15 kannst du den HDR-Toleranzbereich mit setDesiredHdrHeadroom
steuern, um ein ausgewogenes Verhältnis zwischen SDR- und HDR-Inhalten zu erreichen.
Lautstärkeregelung
Android 15 introduces support for the CTA-2075 loudness standard to help you avoid audio loudness inconsistencies and ensure users don't have to constantly adjust volume when switching between content. The system leverages known characteristics of the output devices (headphones and speaker) along with loudness metadata available in AAC audio content to intelligently adjust the audio loudness and dynamic range compression levels.
To enable this feature, you need to ensure loudness metadata is available in
your AAC content and enable the platform feature in your app. For this, you
instantiate a LoudnessCodecController
object by
calling its create factory method with the audio
session ID from the associated AudioTrack
; this
automatically starts applying audio updates. You can pass an
OnLoudnessCodecUpdateListener
to modify or filter
loudness parameters before they are applied on the
MediaCodec
.
// Media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = …
val audioTrack = AudioTrack.Builder()
.setSessionId(sessionId)
.build()
...
// Create new loudness controller that applies the parameters to the MediaCodec
try {
val lcController = LoudnessCodecController.create(mSessionId)
// Starts applying audio updates for each added MediaCodec
}
AndroidX media3 ExoPlayer will also be updated to use the
LoudnessCodecController
APIs for a seamless app integration.
Virtuelle MIDI 2.0-Geräte
Android 13 unterstützt jetzt die Verbindung mit MIDI-2.0-Geräte, die USB verwenden, die über USB kommunizieren Universal MIDI Packets (UMP). Android 15 erweitert UMP-Unterstützung auf virtuelles MIDI Apps, mit denen du durch Kompositions-Apps Synthesizer-Apps steuern kannst als virtuelles MIDI 2.0-Gerät, genau wie bei einem USB MIDI 2.0-Gerät.
Effizientere AV1-Software-Dekodierung
dav1d, der beliebte AV1-Softwaredecoder von VideoLAN, ist jetzt für Android-Geräte verfügbar, die keine AV1-Decodierung in Hardware unterstützen. dav1d ist bis zu 3-mal leistungsfähiger als der alte AV1-Softwaredecoder, sodass mehr Nutzer HD AV1 wiedergeben können, einschließlich einiger Geräte der unteren und mittleren Preisklasse.
Vorerst muss Ihre Anwendung die Verwendung von dav1d aktivieren, indem Sie sie mit dem Namen "c2.android.av1-dav1d.decoder"
aufrufen. „dav1d“ wird bei einem nachfolgenden Update zum standardmäßigen AV1-Software-Decoder gemacht. Diese Unterstützung ist standardisiert und auf Android 11-Geräte zurückportiert, die Google Play-Systemupdates erhalten.
Produktivität und Tools für Entwickler
Der Großteil unserer Arbeit zur Verbesserung Ihrer Produktivität konzentriert sich auf Tools wie Android Studio, Jetpack Compose und die Android Jetpack-Bibliotheken. Wir suchen jedoch immer nach Möglichkeiten auf der Plattform, die Ihnen helfen, Ihre Vision einfacher umzusetzen.
OpenJDK 17-Updates
Unter Android 15 werden die Kernbibliotheken von Android fortlaufend aktualisiert, damit sie den Funktionen der neuesten OpenJDK-LTS-Releases entsprechen.
Die folgenden wichtigen Funktionen und Verbesserungen wurden eingeführt:
- Verbesserung der Lebensqualität bei NIO-Puffern
- Streams
- Weitere
math
- undstrictmath
-Methoden util
-Paketupdates, einschließlich sequenziertercollection
,map
undset
ByteBuffer
-Support inDeflater
- Sicherheitsupdates wie
X500PrivateCredential
und Updates für Sicherheitsschlüssel
Diese APIs werden auf über einer Milliarde Geräten mit Android 12 (API-Level 31) und höher über Google Play-Systemupdates aktualisiert, damit du die neuesten Programmierfunktionen nutzen kannst.
Verbesserungen bei PDFs
Android 15 enthält erhebliche Verbesserungen an den PdfRenderer
-APIs. Apps können erweiterte Funktionen wie Rendering enthalten
passwortgeschützte Dateien, Anmerkungen, Formularbearbeitung,
Suche und Auswahl mit Text Linearisiertes PDF
Optimierungen werden unterstützt, um die lokale PDF-Ansicht zu beschleunigen und den Ressourcenverbrauch zu reduzieren.
Mit der Jetpack-PDF-Bibliothek können Sie Ihrer App ganz einfach Funktionen zum Ansehen von PDFs hinzufügen.
Die PdfRenderer
wurde in ein Modul verschoben, das unabhängig von der Plattformversion über Google Play-Systemupdates aktualisiert werden kann. Wir unterstützen diese Änderungen bis Android 11 (API-Level 30), indem wir eine kompatible Version der API-Oberfläche vor Android 15 namens PdfRendererPreV
erstellen.
Verbesserungen beim automatischen Sprachenwechsel
Android 14 added on-device, multi-language recognition in audio with automatic
switching between languages, but this can cause words to get dropped,
especially when languages switch with less of a pause between the two
utterances. Android 15 adds additional controls to help apps tune this switching
to their use case.
EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
confines the automatic switching to the beginning of the audio session, while
EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
deactivates the
language switching after a defined number of switches. These options are
particularly useful if you expect that there will be a single language spoken
during the session that should be autodetected.
Verbesserte OpenType Variable Font API
Android 15 verbessert die Nutzerfreundlichkeit der OpenType-Variablenschrift. Sie können jetzt
eine FontFamily
-Instanz aus einer Variablenschrift zu erstellen, ohne
mit der buildVariableFamily
API gewichten. Der Text-Renderer überschreibt
Wert der wght
-Achse, der dem angezeigten Text entspricht.
Mit der neuen API wird der Code zum Erstellen eines Typeface
vereinfacht.
erheblich:
Kotlin
val newTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build()
Java
Typeface newTypeface = Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build();
Bisher war viel mehr Code erforderlich, um dieselbe Typeface
zu erstellen:
Kotlin
val oldTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build()) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ).build() ).build()
Java
Typeface oldTypeface = new Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ) .build() ).build();
Hier ein Beispiel dafür, wie ein Typeface
mit der alten und neuen API erstellt wurde
Renderings:
In diesem Beispiel hat der mit der alten API erstellte Typeface
nicht die
für die Schriftstärke 350, 450, 550 und 650
Font
-Instanzen, sodass der Renderer auf die nächste Gewichtung zurückgreift. Also in
In diesem Fall wird 300 statt 350, 400 statt 450 und
so weiter. Im Gegensatz dazu erstellt die mit den neuen APIs erstellte Typeface
dynamisch
eine Font
-Instanz für eine bestimmte Gewichtung, sodass genaue Gewichtungen für 350,
450, 550 und 650 an.
Detaillierte Einstellungen für Zeilenumbrüche
Ab Android 15 kann ein TextView
und der zugrunde liegende Zeilenumbruch den angegebenen Textabschnitt in derselben Zeile beibehalten, um die Lesbarkeit zu verbessern. Sie können diese Anpassung der Zeilenumbrüche nutzen, indem Sie das <nobreak>
-Tag in Stringressourcen oder createNoBreakSpan
verwenden. Ebenso können Sie Wörter aus Bindestrichen beibehalten, indem Sie das <nohyphen>
-Tag oder createNoHyphenationSpan
verwenden.
Die folgende Stringressource enthält beispielsweise keinen Zeilenumbruch und wird so gerendert, dass der Text „Pixel 8 Pro.“ an einer unerwünschten Stelle unterbrochen wird:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
Diese Stringressource enthält dagegen das Tag <nobreak>
, das den Ausdruck „Pixel 8 Pro“ umbricht und Zeilenumbrüche verhindert:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
Die Unterschiede bei der Darstellung dieser Strings sind in den folgenden Bildern zu sehen:
App-Archivierung
Android und Google Play haben angekündigt, dass die App-Archivierung zuletzt unterstützt wird. Jahr, sodass Nutzer Speicherplatz freigeben können, indem sie selten verwendete Apps auf dem Gerät, die über die Android-App veröffentlicht wurden Set bei Google Play. Android 15 unterstützt das Archivieren und Entarchivieren von Apps auf Betriebssystemebene. Dadurch lässt sich die Funktion in allen App-Shops einfacher implementieren.
Apps mit der Berechtigung REQUEST_DELETE_PACKAGES
können die
PackageInstaller
requestArchive
, um die Archivierung eines
installiertes App-Paket entfernt, wodurch das APK und alle im Cache gespeicherten Dateien entfernt werden,
Nutzerdaten. Archivierte Apps werden über die LauncherApps
APIs als darstellbare Apps zurückgegeben. Nutzer sehen eine UI-Anzeige, die darauf hinweist, dass diese Apps archiviert sind. Wenn ein Nutzer auf eine archivierte App tippt,
erhält eine Anfrage zum Wieder aktivieren und der Wiederherstellungsprozess kann
die von der ACTION_PACKAGE_ADDED
-Übertragung überwacht werden.
Grafik
Android 15 bietet die neuesten Grafikverbesserungen, darunter ANGLE und Ergänzungen zum Canvas-Grafiksystem.
GPU-Zugriff von Android modernisieren
Die Android-Hardware hat sich seit den Anfängen stark weiterentwickelt, als das Kernbetriebssystem auf einer einzigen CPU ausgeführt wurde und auf GPUs über APIs basierend auf Pipelines mit fester Funktion zugegriffen wurde. Die Vulkan® Graphics API ist im NDK seit Android 7.0 (API-Level 24) mit einer Abstraktion auf niedrigerer Ebene verfügbar, die moderne GPU-Hardware besser widerspiegelt, besser skaliert werden kann, um mehrere CPU-Kerne zu unterstützen, und einen geringeren CPU-Treiberaufwand bietet, was zu einer verbesserten App-Leistung führt. Vulkan wird von allen modernen Spiel-Engines unterstützt.
Vulkan ist die von Android bevorzugte Schnittstelle zur GPU. Daher enthält Android 15 ANGLE als optionale Ebene zum Ausführen von OpenGL® ES auf Vulkan. Durch den Wechsel zu ANGLE wird die Android OpenGL-Implementierung standardisiert, um die Kompatibilität und in einigen Fällen auch die Leistung zu verbessern. Sie können die Stabilität und Leistung Ihrer OpenGL ES-App mit ANGLE testen. Aktivieren Sie dazu unter Android 15 die Entwickleroption unter Einstellungen -> System -> Entwickleroptionen -> Experimentell: ANGLE aktivieren.
Die Roadmap „Android ANGLE“ auf Vulkan
Im Rahmen der Optimierung unseres GPU-Stacks werden wir in Zukunft ANGLE als GL-Systemtreiber auf weiteren neuen Geräten veröffentlichen. Wir gehen davon aus, dass OpenGL/ES künftig nur über ANGLE verfügbar sein wird. Die Unterstützung von OpenGL ES auf allen Geräten wird jedoch fortgesetzt.
Empfohlene nächste Schritte
Wählen Sie in den Entwickleroptionen den ANGLE-Treiber für OpenGL ES aus und testen Sie Ihre App. Bei neuen Projekten empfehlen wir Ihnen dringend, Vulkan für C/C++ zu verwenden.
Verbesserungen für Canvas
Mit Android 15 wird die Modernisierung des Canvas-Grafiksystems von Android mit neuen Funktionen fortgesetzt:
Matrix44
bietet eine 4x4-Matrix zum Transformieren von Koordinaten, die für die Bearbeitung des Canvas in 3D verwendet werden sollten.clipShader
überschneidet den aktuellen Clip mit dem angegebenen Shader.clipOutShader
legt den Clip auf die Differenz des aktuellen Clips und des Shaders fest. Jeder Shader behandelt den Shader als Alpha-Maske. Dadurch können komplexe Formen effizient gezeichnet werden.
Leistung und Akku
Android konzentriert sich weiterhin darauf, Ihnen dabei zu helfen, die Leistung und Qualität Ihrer Apps zu verbessern. Mit Android 15 werden APIs eingeführt, mit denen sich Aufgaben in Ihrer App effizienter ausführen, die App-Leistung optimieren und Statistiken zu Ihren Apps erfassen lassen.
Best Practices für die Akkueffizienz, Informationen zum Beheben von Problemen mit Netzwerk- und Stromverbrauch sowie Details dazu, wie wir die Akkueffizienz von Hintergrundaktivitäten in Android 15 und neueren Android-Versionen verbessern, finden Sie im Vortrag Improving battery efficiency of background work on Android (Akkueffizienz von Hintergrundaktivitäten unter Android verbessern) von der Google I/O.
ApplicationStartInfo API
In previous versions of Android, app startup has been a bit of a mystery. It was
challenging to determine within your app whether it started from a cold, warm,
or hot state. It was also difficult to know how long your app spent during the
various launch phases: forking the process, calling onCreate
, drawing the
first frame, and more. When your Application
class was instantiated, you had no
way of knowing whether the app started from a broadcast, a content provider, a
job, a backup, boot complete, an alarm, or an Activity
.
The ApplicationStartInfo
API on Android 15 provides
all of this and more. You can even choose to add your own timestamps into the
flow to help collect timing data in one place. In addition to collecting
metrics, you can use ApplicationStartInfo
to help directly optimize app
startup; for example, you can eliminate the costly instantiation of UI-related
libraries within your Application
class when your app is starting up due to a
broadcast.
Detaillierte Informationen zur App-Größe
Seit Android 8.0 (API-Level 26) enthält Android die StorageStats.getAppBytes
API, die die installierte Größe einer App als eine einzelne Bytezahl zusammenfasst. Dies ist die Summe aus der APK-Größe, der Größe der aus dem APK extrahierten Dateien und der auf dem Gerät generierten Dateien, z. B. kompilierter Vorab-Code (AOT). Diese Zahl ist nicht sehr aufschlussreich für die Speichernutzung Ihrer App.
Unter Android 15 wird die StorageStats.getAppBytesByDataType([type])
API hinzugefügt, mit der du Informationen darüber erhalten kannst, wie deine App den gesamten Speicherplatz nutzt, einschließlich APK-Dateiaufteilungen, AOT-Code und beschleunigtem Code, DEX-Metadaten, Bibliotheken und geführten Profilen.
Von der App verwaltetes Profiling
Android 15 enthält die Klasse ProfilingManager
, mit der Sie Profilinformationen aus Ihrer App heraus erfassen können, z. B. Heap-Dumps, Heap-Profile und Stack-Sampling. Er stellt einen Callback an Ihre Anwendung mit einem bereitgestellten Tag bereit, um die Ausgabedatei zu identifizieren. Diese wird im Dateiverzeichnis Ihrer Anwendung bereitgestellt. Die API führt eine Ratenbegrenzung durch, um Leistungseinbußen zu minimieren.
Wenn Sie das Erstellen von Profilerstellungsanfragen in Ihrer Anwendung vereinfachen möchten, empfehlen wir die Verwendung der entsprechenden Profiling
AndroidX API, die in Core 1.15.0-rc01 oder höher verfügbar ist.
Verbesserungen bei SQLite-Datenbanken
Mit Android 15 werden SQLite-APIs eingeführt, die erweiterte Funktionen der SQLite-Engine zugrunde, die auf spezifische Leistungsprobleme abzielen, in Apps. Diese APIs sind im Update von SQLite auf Version 3.44.3 enthalten.
Entwickler sollten die Best Practices für die SQLite-Leistung lesen. um das Beste aus ihrer SQLite-Datenbank herauszuholen, insbesondere bei der Arbeit mit großen Datenbanken oder bei der Ausführung von latenzempfindlichen Abfragen.
- Schreibgeschützte ausgesetzte Transaktionen: wenn Transaktionen ausgegeben werden, die
(keine Anweisungen schreiben), verwenden Sie
beginTransactionReadOnly()
undbeginTransactionWithListenerReadOnly(SQLiteTransactionListener)
um schreibgeschützte Transaktionen vom TypDEFERRED
auszuführen. Solche Transaktionen können gleichzeitig ausgeführt werden. Wenn sich die Datenbank im WAL-Modus befindet, können sie auch gleichzeitig mitIMMEDIATE
- oderEXCLUSIVE
-Transaktionen ausgeführt werden. - Zeilenanzahl und ‑IDs: Es wurden APIs hinzugefügt, um die Anzahl der geänderten Zeilen oder die ID der zuletzt eingefügten Zeile abzurufen, ohne eine zusätzliche Abfrage auszuführen.
getLastChangedRowCount()
gibt die Anzahl der Zeilen zurück, die von der letzten SQL-Anweisung innerhalb die aktuelle Transaktion, währendgetTotalChangedRowCount()
gibt die Anzahl der aktuellen Verbindung zurück.getLastInsertRowId()
gibtrowid
der letzten Zeile zurück das bei der aktuellen Verbindung eingefügt werden soll. - Raw-Anweisungen: Hiermit wird eine SQlite-Anweisung ausgegeben, ohne dass praktische Wrapper und eventueller zusätzlicher Verarbeitungsaufwand verwendet werden.
Updates für das Android Dynamic Performance Framework
Für Android 15 investieren wir weiterhin in das Android Dynamic Performance Framework (ADPF). Diese APIs ermöglichen eine direktere Interaktion von Spielen und leistungsintensiven Apps mit den Energie- und Wärmesystemen von Android-Geräten. Auf unterstützten Geräten werden mit Android 15 neue ADPF-Funktionen hinzugefügt:
- Ein Energiesparmodus für Hinweissitzungen, der angibt, dass die zugehörigen Threads Energiesparen gegenüber Leistung vorziehen sollten. Dies eignet sich hervorragend für Hintergrundarbeitslasten mit langer Ausführungszeit.
- Sowohl GPU- als auch CPU-Arbeitsdauer können in Hinweissitzungen gemeldet werden. Dadurch kann das System CPU- und GPU-Frequenzen gemeinsam anpassen, um die Arbeitslastanforderungen bestmöglich zu erfüllen.
- Grenzwerte für den thermischen Toleranzbereich, um den Status einer Drosselung anhand der Vorhersage des Toleranzbereichs zu interpretieren.
Weitere Informationen zur Verwendung von ADPF in Ihren Apps und Spielen finden Sie in der Dokumentation.
Datenschutz
Android 15 bietet eine Vielzahl von Funktionen, mit denen App-Entwickler den Datenschutz der Nutzer schützen können.
Erkennung von Bildschirmaufzeichnungen
Android 15 adds support for apps to detect that they are being recorded. A callback is invoked whenever the app transitions between being visible or invisible within a screen recording. An app is considered visible if activities owned by the registering process's UID are being recorded. This way, if your app is performing a sensitive operation, you can inform the user that they're being recorded.
val mCallback = Consumer<Int> { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// We're being recorded
} else {
// We're not being recorded
}
}
override fun onStart() {
super.onStart()
val initialState =
windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
mCallback.accept(initialState)
}
override fun onStop() {
super.onStop()
windowManager.removeScreenRecordingCallback(mCallback)
}
Erweiterte IntentFilter-Funktionen
Android 15 unterstützt eine genauere Intent
-Auflösung über UriRelativeFilterGroup
. Diese enthält eine Reihe von UriRelativeFilter
-Objekten, die eine Reihe von Intent
-Abgleichsregeln bilden, die jeweils erfüllt werden müssen, einschließlich URL-Suchparameter, URL-Fragmente und Blockierungs- oder Ausschlussregeln.
Diese Regeln können in der AndroidManifest
-XML-Datei mit dem <uri-relative-filter-group>
-Tag definiert werden, das optional ein android:allow
-Tag enthalten kann. Diese Tags können <data>
-Tags enthalten, die vorhandene Daten-Tag-Attribute sowie die Attribute android:query
und android:fragment
verwenden.
Hier ein Beispiel für die AndroidManifest
-Syntax:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:domain="astore.com" />
<uri-relative-filter-group>
<data android:pathPrefix="/auth" />
<data android:query="region=na" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:query="mobileoptout=true" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:fragmentPrefix="faq" />
</uri-relative-filter-group>
</intent-filter>
Vertrauliches Profil
Private space lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. The private space uses a separate user profile. The user can choose to use the device lock or a separate lock factor for the private space.
Apps in the private space show up in a separate container in the launcher, and are hidden from the recents view, notifications, settings, and from other apps when the private space is locked. User-generated and downloaded content (such as media or files) and accounts are separated between the private space and the main space. The system sharesheet and the photo picker can be used to give apps access to content across spaces when the private space is unlocked.
Users can't move existing apps and their data into the private space. Instead, users select an install option in the private space to install an app using whichever app store they prefer. Apps in the private space are installed as separate copies from any apps in the main space (new copies of the same app).
When a user locks the private space, the profile is stopped. While the profile is stopped, apps in the private space are no longer active and can't perform foreground or background activities, including showing notifications.
We recommend that you test your app with private space to make sure your app works as expected, especially if your app falls into one of the following categories:
- Apps with logic for work profiles that assumes that any installed copies of their app that aren't in the main profile are in the work profile.
- Medical apps
- Launcher apps
- App store apps
Letzte Nutzerauswahl für den Zugriff auf ausgewählte Fotos abfragen
Apps können jetzt nur die zuletzt ausgewählten Fotos und Videos hervorheben, wenn teilweiser Zugriff auf Medienberechtigungen gewährt wird. Diese Funktion kann die Nutzerfreundlichkeit von Apps verbessern, die häufig Zugriff auf Fotos und Videos anfordern. Wenn Sie diese Funktion in Ihrer App verwenden möchten, aktivieren Sie das Argument QUERY_ARG_LATEST_SELECTION_ONLY
, wenn Sie MediaStore
über ContentResolver
abfragen.
Kotlin
val externalContentUri = MediaStore.Files.getContentUri("external") val mediaColumns = arrayOf( FileColumns._ID, FileColumns.DISPLAY_NAME, FileColumns.MIME_TYPE, ) val queryArgs = bundleOf( // Return only items from the last selection (selected photos access) QUERY_ARG_LATEST_SELECTION_ONLY to true, // Sort returned items chronologically based on when they were added to the device's storage QUERY_ARG_SQL_SORT_ORDER to "${FileColumns.DATE_ADDED} DESC", QUERY_ARG_SQL_SELECTION to "${FileColumns.MEDIA_TYPE} = ? OR ${FileColumns.MEDIA_TYPE} = ?", QUERY_ARG_SQL_SELECTION_ARGS to arrayOf( FileColumns.MEDIA_TYPE_IMAGE.toString(), FileColumns.MEDIA_TYPE_VIDEO.toString() ) )
Java
Uri externalContentUri = MediaStore.Files.getContentUri("external"); String[] mediaColumns = { FileColumns._ID, FileColumns.DISPLAY_NAME, FileColumns.MIME_TYPE }; Bundle queryArgs = new Bundle(); queryArgs.putBoolean(MediaStore.QUERY_ARG_LATEST_SELECTION_ONLY, true); queryArgs.putString(MediaStore.QUERY_ARG_SQL_SORT_ORDER, FileColumns.DATE_ADDED + " DESC"); queryArgs.putString(MediaStore.QUERY_ARG_SQL_SELECTION, FileColumns.MEDIA_TYPE + " = ? OR " + FileColumns.MEDIA_TYPE + " = ?"); queryArgs.putStringArray(MediaStore.QUERY_ARG_SQL_SELECTION_ARGS, new String[] { String.valueOf(FileColumns.MEDIA_TYPE_IMAGE), String.valueOf(FileColumns.MEDIA_TYPE_VIDEO) });
Privacy Sandbox für Android
Android 15 enthält die neuesten Erweiterungen für Android-Anzeigendienste sowie die neueste Version der Privacy Sandbox für Android. Diese Ergänzung ist Teil unserer Bemühungen, neue Technologien zu entwickeln, die den Datenschutz für Nutzer verbessern und effektive, personalisierte Anzeigen für mobile Apps ermöglichen. Auf unserer Privacy Sandbox-Seite finden Sie weitere Informationen zur Privacy Sandbox für Entwicklervorschauen und Betaprogrammen für Android, um Ihnen den Einstieg zu erleichtern.
Health Connect
Android 15 integriert die neuesten Erweiterungen Health Connect by Android, eine sichere und zentrale Plattform zum Verwalten und Teilen von durch Apps erhobenen Gesundheits- und Fitnessdaten. Dieses Update Unterstützung weiterer Datentypen über Fitness, Ernährung, Hauttemperatur, Trainingspläne und mehr.
Mit dem Tracking der Hauttemperatur können Nutzer genauere Temperaturdaten von einem Wearable oder einem anderen Tracking-Gerät speichern und teilen.
Trainingspläne sind strukturierte Trainingspläne, die Nutzern helfen, ihre Fitnessziele zu erreichen. Trainingspläne unterstützen eine Vielzahl von Zielvorhaben für den Abschluss und die Leistung:
- Abschlussziele im Umkreis von verbrannten Kalorien distance, duration, Wiederholungen und Schritte.
- Leistungsziele in etwa viele Wiederholungen wie möglich (AMRAP), Kadenz, Herzfrequenz Macht, empfundene Belastungsrate und Geschwindigkeit.
Weitere Informationen zu den neuesten Updates für Health Connect auf Android finden Sie im Vortrag Building adaptable experiences with Android Health (Adaptive Funktionen mit Android Health entwickeln) von der Google I/O.
App-Bildschirmfreigabe
Android 15 unterstützt die Bildschirmfreigabe für Apps, sodass Nutzer nur ein App-Fenster und nicht den gesamten Gerätebildschirm teilen oder aufzeichnen können. Diese Funktion, die erstmals in Android 14 QPR2 aktiviert wurde, umfasst MediaProjection
Callbacks, mit denen Sie die Bildschirmfreigabe Ihrer App anpassen können. Bei Apps, die auf Android 14 (API-Level 34) oder höher ausgerichtet sind, ist für jede MediaProjection
-Aufnahmesitzung die Einwilligung des Nutzers erforderlich.
Nutzerfreundlichkeit und System-UI
Android 15 bietet App-Entwicklern und Nutzern mehr Kontrolle und Flexibilität bei der Konfiguration ihres Geräts.
Weitere Informationen dazu, wie Sie die neuesten Verbesserungen in Android 15 nutzen können, um die Nutzerfreundlichkeit Ihrer App zu verbessern, finden Sie im Vortrag Die Nutzerfreundlichkeit Ihrer Android-App verbessern von der Google I/O.
Umfangreichere Widget-Vorschauen mit der Generated Previews API
Vor Android 15 bestand die einzige Möglichkeit, Vorschauen für die Widget-Auswahl bereitzustellen, Eine statische Bild- oder Layoutressource Diese Vorschauen unterscheiden sich oft erheblich vom Erscheinungsbild des tatsächlichen Widgets, wenn es auf dem Startbildschirm platziert wird. Außerdem können mit Jetpack Glance keine statischen Ressourcen erstellt werden. Daher musste ein Glance-Entwickler einen Screenshot seines Widgets erstellen oder ein XML-Layout erstellen, um eine Widget-Vorschau zu erhalten.
Android 15 unterstützt jetzt generierte Vorschauen. Das bedeutet, dass App-Widget-Anbieter RemoteViews
generieren können, um sie anstelle einer statischen Ressource als Auswahlvorschau zu verwenden.
Push API
Apps können generierte Vorschauen über eine Push-API bereitstellen. Apps bieten
und erhalten keine explizite Anfrage
vom Host gesendet,
um eine Vorschau anzuzeigen. Vorschauen werden in AppWidgetService
gespeichert und können von den Gastgebern auf Anfrage abgerufen werden. Im folgenden Beispiel wird eine XML-Widget-Layoutressource geladen und als Vorschau festgelegt:
AppWidgetManager.getInstance(appContext).setWidgetPreview(
ComponentName(
appContext,
SociaLiteAppWidgetReceiver::class.java
),
AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
RemoteViews("com.example", R.layout.widget_preview)
)
Der erwartete Ablauf sieht so aus:
- Der Widget-Anbieter ruft jederzeit
setWidgetPreview
auf. Die bereitgestellten Vorschauen werden zusammen mit anderen Anbieterinformationen inAppWidgetService
gespeichert. setWidgetPreview
benachrichtigt Hosts über eine aktualisierte Vorschau über dasAppWidgetHost.onProvidersChanged
-Rückruf. Daraufhin reagiert das Widget alle Anbieterinformationen neu lädt.- Bei der Anzeige einer Widget-Vorschau prüft der Host
AppWidgetProviderInfo.generatedPreviewCategories
. Wenn das ausgewählte Element Kategorie verfügbar ist, ruftAppWidgetManager.getWidgetPreview
an gibt die gespeicherte Vorschau für diesen Anbieter zurück.
Wann Sie setWidgetPreview
anrufen sollten
Da es keinen Callback für die Vorschau gibt, können Apps wenn sie ausgeführt werden. Wie oft die Vorschau aktualisiert wird, hängt vom Anwendungsfall des Widgets ab.
In der folgenden Liste werden die beiden Hauptkategorien von Anwendungsfällen für Vorschauen beschrieben:
- Anbieter, die in ihrer Widget-Vorschau echte Daten anzeigen, z. B. personalisierte oder aktuelle Informationen. Diese Anbieter können die Vorschau einrichten, sobald der Nutzer angemeldet sind oder die Erstkonfiguration in der App vorgenommen hat. Danach werden sie können eine regelmäßige Aufgabe einrichten, um die Vorschauen im gewünschten Rhythmus zu aktualisieren. Beispiele für diese Art von Widget sind Foto-, Kalender-, Wetter- oder Nachrichten-Widgets.
- Anbieter, die in Vorschau- oder Schnellaktions-Widgets statische Informationen anzeigen, die keine Daten enthalten. Diese Anbieter können die Vorschau einmal einrichten, App-Starts. Beispiele für diese Art von Widget sind Widget „Aktionen“ oder das Widget für Chrome-Verknüpfungen.
Einige Anbieter zeigen in der Auswahl für den Hub-Modus möglicherweise statische Vorschaubilder, aber in der Auswahl für den Startbildschirm echte Informationen an. Diese Anbieter müssen sich an die Richtlinien halten, für beide Anwendungsfälle, um eine Vorschau festzulegen.
Die Funktion „Bild im Bild“
Android 15 führt Änderungen bei Bild im Bild (BiB) ein, die einen noch reibungsloseren Übergang im BiB-Modus ermöglichen. Dies ist vorteilhaft für Apps, bei denen UI-Elemente über der Hauptbenutzeroberfläche eingeblendet werden, die in BiB eingefügt wird.
Entwickler verwenden den Rückruf onPictureInPictureModeChanged
, um eine Logik zu definieren, mit der die Sichtbarkeit der überlagerten UI-Elemente umgeschaltet wird. Dieser Callback wird ausgelöst, wenn die BiB-Animation zum Ein- oder Ausblenden abgeschlossen ist. Ab Android 15 enthält die Klasse PictureInPictureUiState
einen weiteren Status.
Mit diesem UI-Status beobachten Apps, die auf Android 15 (API-Level 35) ausgerichtet sind, den Activity#onPictureInPictureUiStateChanged
-Callback mit isTransitioningToPip()
, sobald die BiB-Animation gestartet wird. Es gibt viele UI-Elemente, die für die App im PiP-Modus nicht relevant sind, z. B. Ansichten oder Layouts mit Informationen wie Vorschlägen, anstehenden Videos, Bewertungen und Titeln. Wenn die App in den PiP-Modus wechselt, verwende den onPictureInPictureUiStateChanged
-Callback, um diese UI-Elemente auszublenden. Wenn die App vom PiP-Fenster in den Vollbildmodus wechselt, kannst du diese Elemente mit dem onPictureInPictureModeChanged
-Callback wieder einblenden, wie in den folgenden Beispielen gezeigt:
override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {
if (pipState.isTransitioningToPip()) {
// Hide UI elements
}
}
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
if (isInPictureInPictureMode) {
// Unhide UI elements
}
}
Durch die schnelle Sichtbarkeitsschaltung irrelevanter UI-Elemente (für ein PiP-Fenster) wird eine flüssigere und flackerfreie PiP-Einblendungsanimation ermöglicht.
Verbesserte „Bitte nicht stören“-Regeln
Mit AutomaticZenRule
können Apps die Funktion „Aufmerksamkeitserkennung“ anpassen
Verwaltungsregeln (Bitte nicht stören) und entscheiden, wann sie aktiviert oder deaktiviert werden
. In Android 15 wurden diese Regeln erheblich erweitert, um die Nutzerfreundlichkeit zu verbessern. Die folgenden Verbesserungen sind enthalten:
AutomaticZenRule
Typen hinzufügen, damit das System einige Regeln besonders behandeln kann.AutomaticZenRule
wurde ein Symbol hinzugefügt, damit die Modi besser erkennbar sind.- Durch Hinzufügen eines
triggerDescription
-Strings zuAutomaticZenRule
, der Folgendes beschreibt: Bedingungen, unter denen die Regel für den Nutzer aktiviert werden soll. - Hinzugefügt
ZenDeviceEffects
aufAutomaticZenRule
, sodass Regeln z. B. die Graustufe auslösen, Nachtmodus verwenden oder den Hintergrund dimmen.
VibrationEffect für Benachrichtigungskanäle festlegen
Android 15 unterstützt die Einstellung starker Vibrationen für eingehende Benachrichtigungen, indem
mit NotificationChannel.setVibrationEffect
, sodass
können Ihre Nutzer zwischen
verschiedenen Benachrichtigungstypen unterscheiden,
ohne auf ihr Gerät schauen zu müssen.
Statusleiste für die Medienprojektion und automatisches Beenden
Media projection can expose private user information. A new, prominent status bar chip makes users aware of any ongoing screen projection. Users can tap the chip to stop screen casting, sharing, or recording. Also, for a more intuitive user experience, any in‑progress screen projection now automatically stops when the device screen is locked.
Große Bildschirme und Formfaktoren
Mit Android 15 können Ihre Apps die Vorteile der verschiedenen Formfaktoren von Android optimal nutzen, darunter große Displays, Klapp- und Faltgeräte.
Verbessertes Multitasking auf großen Displays
Android 15 gives users better ways to multitask on large screen devices. For example, users can save their favorite split-screen app combinations for quick access and pin the taskbar on screen to quickly switch between apps. This means that making sure your app is adaptive is more important than ever.
Google I/O has sessions on Building adaptive Android apps and Building UI with the Material 3 adaptive library that can help, and our documentation has more to help you Design for large screens.
Unterstützung für Cover-Display
Deine App kann eine Eigenschaft deklarieren, die unter Android 15 verwendet wird, damit deine Application
oder Activity
auf kleinen Titelbildschirmen unterstützter umklappbarer Geräte angezeigt werden können. Diese Bildschirme sind zu klein, um als kompatible Ziele für die Ausführung von Android-Apps betrachtet zu werden, aber Ihre App kann diese unterstützen, sodass Ihre App an mehr Orten verfügbar ist.
Konnektivität
Mit Android 15 wird die Plattform aktualisiert, damit Ihre App auf die neuesten Fortschritte in der Kommunikation und drahtlosen Technologien zugreifen kann.
Satellitenunterstützung
Android 15 erweitert die Plattformunterstützung für die Satellitenverbindung weiter und enthält einige UI-Elemente, die für eine einheitliche Nutzererfahrung bei der Satellitenverbindung sorgen.
Mit ServiceState.isUsingNonTerrestrialNetwork()
können Apps erkennen, wenn ein Gerät mit einem Satelliten verbunden ist. So können sie besser nachvollziehen, warum vollständige Netzwerkdienste möglicherweise nicht verfügbar sind. Außerdem unterstützt Android 15 SMS- und MMS-Apps sowie vorinstallierte RCS-Apps, um die Satellitenverbindung zum Senden und Empfangen von Nachrichten zu nutzen.
Verbesserte NFC-Funktionen
Android 15 arbeitet daran, das kontaktlose Bezahlen nahtloser und zuverlässiger zu gestalten und gleichzeitig das robuste NFC-System von Android zu unterstützen. Auf unterstützten Geräten können Apps den NfcAdapter
anfordern, in den Beobachtungsmodus zu wechseln. In diesem Modus werden die PollingFrame
-Objekte des NFC-Dienstes der App zur Verarbeitung gesendet, wobei das Gerät zwar abhört, aber nicht auf die NFC-Lesegeräte reagiert. Die PollingFrame
-Objekte können zur Authentifizierung vor der ersten Kommunikation mit dem NFC-Lesegerät verwendet werden, was in vielen Fällen eine Transaktion mit nur einem Fingertipp ermöglicht.
Darüber hinaus können Anwendungen jetzt auf unterstützten Geräten einen Filter registrieren, sodass sie über die Aktivität der Abfrageschleife benachrichtigt werden können. Dies ermöglicht einen reibungslosen Betrieb mit mehreren NFC-fähigen Anwendungen.
Wallet-Rolle
Mit Android 15 wird eine neue Wallet-Rolle eingeführt, die eine engere Einbindung in die bevorzugte Wallet-App des Nutzers ermöglicht. Diese Rolle ersetzt die NFC-Standardeinstellung für kontaktloses Bezahlen. Nutzer können den Wallet-Rolleninhaber unter Einstellungen > Apps > Standard-Apps verwalten.
Die Rolle „Wallet“ wird beim Routing von NFC-Tippaktionen für AIDs verwendet, die in der Zahlungskategorie registriert sind. Eingaben werden immer an den Wallet-Rolleninhaber gesendet, es sei denn, eine andere App, die für dieselbe AID registriert ist, wird im Vordergrund ausgeführt.
Diese Rolle wird auch verwendet, um zu bestimmen, wo die Kachel für den Schnellzugriff für Wallet bei Aktivierung platziert werden soll. Wenn die Rolle auf „None“ festgelegt ist, ist die QuickAccess-Kachel nicht verfügbar und NFC-Tippaktionen für Zahlungskategorien werden nur an die Vordergrund-App gesendet.
Sicherheit
Mit Android 15 können Sie die Sicherheit Ihrer App verbessern, die Daten Ihrer App schützen und Nutzern mehr Transparenz und Kontrolle über ihre Daten bieten. Weitere Informationen dazu, wie wir die Sicherheit von Nutzern verbessern und Ihre App vor neuen Bedrohungen schützen, finden Sie im Vortrag Safeguarding user security on Android (Nutzersicherheit auf Android verbessern) von der Google I/O.
Credential Manager in die Funktion „Autofill“ einbinden
Starting with Android 15, developers can link specific views like username or password fields with Credential Manager requests, making it easier to provide a tailored user experience during the sign-in process. When the user focuses on one of these views, a corresponding request is sent to Credential Manager. The resulting credentials are aggregated across providers and displayed in autofill fallback UIs, such as inline suggestions or drop-down suggestions. The Jetpack androidx.credentials library is the preferred endpoint for developers to use and will soon be available to further enhance this feature in Android 15 and higher.
Registrierung und Anmeldung per One Tap mit biometrischen Aufforderungen integrieren
Der Anmeldedaten-Manager integriert biometrische Aufforderungen in die Erstellung von Anmeldedaten und Anmeldeprozessen, sodass Anbieter keine biometrische Aufforderungen. Anbieter von Anmeldedaten müssen sich daher nur auf die der Erstellungs- und Abrufvorgänge, ergänzt mit dem biometrischen Flussergebnis. Dieser vereinfachte Prozess ermöglicht eine effizientere und optimierte Erstellung und Abruf von Anmeldedaten.
Schlüsselverwaltung für die Ende-zu-Ende-Verschlüsselung
Wir führen E2eeContactKeysManager
in Android 15 ein. Damit wird die Ende-zu-Ende-Verschlüsselung (E2EE) in Android-Apps durch die Bereitstellung einer API auf Betriebssystemebene für das Speichern kryptografischer öffentlicher Schlüssel ermöglicht.
E2eeContactKeysManager
ist für die Einbindung in die Anwendung für Plattformkontakte konzipiert und bietet Nutzern eine zentrale Möglichkeit, die öffentlichen Schlüssel ihrer Kontakte zu verwalten und zu prüfen.
Berechtigungsprüfungen für Inhalts-URIs
Mit Android 15 werden eine Reihe neuer APIs eingeführt, die Berechtigungsprüfungen für Inhalts-URIs durchführen:
Context.checkContentUriPermissionFull
: Damit wird eine vollständige Berechtigungsprüfung für Inhalts-URIs durchgeführt.- Manifestattribut
Activity
requireContentUriPermissionFromCaller
: Damit werden beim Start der Aktivität festgelegte Berechtigungen für die bereitgestellten Inhalts-URIs erzwungen. - Klasse
ComponentCaller
fürActivity
-Aufrufer: Die App, mit der die Aktivität gestartet wurde.
Bedienungshilfen
Android 15 bietet Funktionen, die die Barrierefreiheit für Nutzer verbessern.
Bessere Brailleschrift
Seit Android 15 unterstützt TalkBack nun Braillezeilen, die den HID-Standard sowohl über USB als auch über sicheres Bluetooth verwenden.
Dieser Standard ähnelt dem für Mäuse und Tastaturen. Er wird Android im Laufe der Zeit dabei helfen, eine breitere Palette von Braillezeilen zu unterstützen.
Lokalisierung
Android 15 bietet Funktionen, die die Nutzerfreundlichkeit verbessern, wenn ein Gerät in verschiedenen Sprachen verwendet wird.
Variable CJK-Schriftart
Ab Android 15 ist NotoSansCJK die Schriftartdatei für Chinesisch, Japanisch und Koreanisch (CJK) als variable Schriftart. Variable Schriftarten eröffnen neue Möglichkeiten für die Creative-Typografie in CJK-Sprachen. Designschaffende können ein breiteres Spektrum an Stilen ausprobieren und optisch ansprechende Layouts erstellen, die zuvor schwer oder unmöglich zu erreichen waren.
Zeichenabstand
Ab Android 15 kann Text mithilfe von Buchstabenabstand ausgerichtet werden. Verwenden Sie dazu JUSTIFICATION_MODE_INTER_CHARACTER
. Interwort-Begründung lautete
erstmals mit Android 8.0 (API-Level 26) eingeführt und Zeichen
Justification bietet ähnliche Funktionen für Sprachen,
Leerzeichen für die Segmentierung, z. B. Chinesisch oder Japanisch.
Konfiguration automatischer Zeilenschaltungen
Android unterstützt jetzt wortbasierte Zeilenumbrüche für Japanisch und Koreanisch in
Android 13 (API-Level 33) Durch Zeilenumbrüche dagegen verbessern sich
von kurzen Textzeilen gut lesbar sind, eignen sie sich nicht gut für lange Textzeilen.
In Android 15 können Apps textbasierte Zeilenumbrüche nur auf kurze Zeilen anwenden
des Textes, unter Verwendung des LINE_BREAK_WORD_STYLE_AUTO
Option. Mit dieser Option wird die beste Wortstiloption für den Text ausgewählt.
Für kurze Textzeilen werden satzbasierte Zeilenumbrüche verwendet, die wie LINE_BREAK_WORD_STYLE_PHRASE
funktionieren, wie im folgenden Bild dargestellt:
Bei längeren Textzeilen verwendet LINE_BREAK_WORD_STYLE_AUTO
das Zeichen „Nein“
Zeilenumbruch-Wortformat, das genauso funktioniert wie
LINE_BREAK_WORD_STYLE_NONE
, wie in den
folgendes Bild:
Zusätzliche japanische Hentaigana-Schriftart
In Android 15 eine Schriftartdatei für das alte japanische Hiragana (bekannt als Hentaigana) ist standardmäßig gebündelt. Die einzigartigen Formen von Hentaigana-Figuren sorgen dafür, einem Design oder einem Design unverwechselbar machen und gleichzeitig Übertragung und Verständnis alter japanischer Dokumente.
VideoLAN cone Copyright (c) 1996-2010 VideoLAN. Dieses Logo oder eine modifizierte Version dürfen von jeder Person verwendet oder modifiziert werden, um auf das VideoLAN-Projekt oder ein vom VideoLAN-Team entwickeltes Produkt zu verweisen. Dies bedeutet jedoch nicht, dass dies vom Projekt unterstützt wird.
Vulkan und das Vulkan-Logo sind eingetragene Marken von Khronos Group Inc.
OpenGL ist eine eingetragene Marke und das OpenGL ES-Logo ist eine Marke von Hewlett Packard Enterprise, die mit Genehmigung von Khronos verwendet wird.