Android 15 bietet neue 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 neuen, geänderten und entfernten APIs finden Sie im Bericht zu API-Unterschieden. Ausführliche Informationen zu den neuen APIs finden Sie in der Android API-Referenz. Die neuen APIs sind hervorgehoben dargestellt. Wenn du wissen möchtest, in welchen Bereichen sich Plattformänderungen auf deine Apps auswirken können, solltest du dir die Verhaltensänderungen von Android 15, die sich auf Apps auswirken, wenn sie auf Android 15 ausgerichtet sind, und die Verhaltensänderungen, die alle Apps unabhängig vontargetSdkVersion
betreffen, ansehen.
Kamera und Medien
Android 15 enthält eine Vielzahl von Funktionen, die die Kamera- und Mediennutzung verbessern und mit denen du Tools und Hardware nutzen kannst, um Creator dabei zu unterstützen, ihre Vision auf Android zu verwirklichen.
Weitere Informationen zu den neuesten Funktionen und Entwicklerlösungen für Android-Medien und -Kameras finden Sie im Vortrag Modern Android-Medien- und -Kameraerlebnisse auf der Google I/O.
Booster 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-Tonsteuerung
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.
![](https://developer.android.com/static/about/versions/15/images/hdr-headroom.png?authuser=6&hl=de)
Lautstärkeregelung
Mit Android 15 wird der Lautheitsstandard CTA-2075 unterstützt, damit Inkonsistenzen in der Audiowiedergabe vermieden werden und Nutzer die Lautstärke beim Wechseln zwischen Inhalten nicht ständig anpassen müssen. Das System nutzt bekannte Eigenschaften der Ausgabegeräte (Kopfhörer und Lautsprecher) zusammen mit den in AAC-Audioinhalten verfügbaren Lautstärkemetadaten, um die Audiolautstärke und die Dynamikverdichtung intelligent anzupassen.
Damit du diese Funktion aktivieren kannst, musst du dafür sorgen, dass Lautstärke-Metadaten in deinen AAC-Inhalten verfügbar sind, und aktivieren die Plattformfunktion in deiner App. Dazu instanziierst du ein LoudnessCodecController
-Objekt, indem du seine create-Factory-Methode mit der Audiositzungs-ID aus der verknüpften AudioTrack
aufrufst. Dadurch werden automatisch Audioupdates angewendet. Sie können eine OnLoudnessCodecUpdateListener
übergeben, um Lautheitsparameter zu ändern oder zu filtern, bevor sie auf den MediaCodec
angewendet werden.
// 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 wird ebenfalls aktualisiert, um die LoudnessCodecController
-APIs für eine nahtlose App-Integration zu verwenden.
Virtuelle MIDI 2.0-Geräte
Android 13 unterstützt jetzt die Verbindung mit MIDI 2.0-Geräten über USB, die über Universal MIDI Packets (UMP) kommunizieren. Android 15 dehnt die UMP-Unterstützung auf virtuelle MIDI-Apps aus. So können Kompositions-Apps Synthesizer-Apps als virtuelles MIDI 2.0-Gerät steuern, genau wie mit einem USB MIDI 2.0-Gerät.
Effizientere AV1-Software-Decodierung
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
Wir arbeiten zwar vor allem daran, die Produktivitätszentren für Tools wie Android Studio, Jetpack Compose und die Android Jetpack-Bibliotheken zu optimieren, aber wir suchen immer nach Möglichkeiten in der Plattform, damit Sie Ihre Vision leichter verwirklichen können.
Updates zu OpenJDK 17
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 beim PDF
Android 15 enthält wesentliche Verbesserungen an den PdfRenderer
APIs. Apps können erweiterte Funktionen wie das Rendern von passwortgeschützten Dateien, Anmerkungen, Formularbearbeitung, Suche und Auswahl mit Kopie enthalten. Linearisierte PDF-Optimierungen werden unterstützt, um die lokale PDF-Anzeige zu beschleunigen und die Ressourcennutzung zu reduzieren.
![](https://developer.android.com/static/about/versions/15/images/pdf-rendering.png?authuser=6&hl=de)
PdfRenderer
wurde in ein Modul verschoben, das unabhängig vom Plattform-Release mithilfe von Google Play-Systemupdates aktualisiert werden kann. Wir unterstützen diese Änderungen wieder auf Android 11 (API-Level 30) und erstellen eine kompatible Version der API-Oberfläche vor Android 15 namens PdfRendererPreV
.
Wir schätzen Ihr Feedback zu den Verbesserungen, die wir an der PdfRenderer
-API-Oberfläche vorgenommen haben, und planen, die Integration dieser APIs in Ihre App mit einer zukünftigen Android Jetpack-Bibliothek noch weiter zu vereinfachen.
Verfeinerungen des automatischen Sprachwechsels
Unter Android 14 wurde die mehrsprachige Spracherkennung auf dem Gerät mit automatischem Wechsel zwischen Sprachen hinzugefügt. Dies kann jedoch dazu führen, dass Wörter ausgelassen werden, insbesondere wenn Sprachen mit weniger Pausen zwischen den beiden Äußerungen wechseln. Android 15 bietet zusätzliche Steuerelemente, mit denen Apps diesen Wechsel auf ihren Anwendungsfall abstimmen können.
EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
beschränkt den automatischen Wechsel bis zum Beginn der Audiositzung, während EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
den Sprachwechsel nach einer bestimmten Anzahl von Wechsel deaktiviert. Diese Optionen sind besonders nützlich, wenn Sie davon ausgehen, dass während der Sitzung eine einzelne Sprache gesprochen wird, die automatisch erkannt werden sollte.
Verbesserte OpenType Variable Font API
In Android 15 wurde die Nutzerfreundlichkeit der Schriftart der OpenType-Variablen verbessert. Sie können jetzt eine FontFamily
-Instanz aus einer variablen Schriftart erstellen, ohne mit der buildVariableFamily
API Gewichtachsen anzugeben. Der Text-Renderer überschreibt den Wert der wght
-Achse, um ihn an den angezeigten Text anzupassen.
Mit der neuen API wird der Code zum Erstellen einer Typeface
erheblich vereinfacht:
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();
Früher hätten Sie viel mehr Code benötigt, um dasselbe Typeface
-Objekt 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
, der mit der alten und der neuen API erstellt wurde, gerendert wird:
In diesem Beispiel hat die mit der alten API erstellte Typeface
nicht die Möglichkeit, genaue Schriftstärken für die Font
-Instanzen mit 350, 450, 550 und 650 zu erstellen. Daher greift der Renderer auf die nächsthöhere Gewichtung zurück. In diesem Fall wird also 300 statt 350, 400 statt 450 gerendert und so weiter. Im Gegensatz dazu wird bei dem mit den neuen APIs erstellten Typeface
dynamisch eine Font
-Instanz für eine bestimmte Gewichtung erstellt, sodass auch die genauen Gewichtungen für 350, 450, 550 und 650 gerendert werden.
Detaillierte Steuerelemente für Zeilenumbrüche
Ab Android 15 können ein TextView
und der zugrunde liegende Zeilenumbruch einen bestimmten Teil des Textes in derselben Zeile beibehalten, um die Lesbarkeit zu verbessern. Sie können diese Anpassung des Zeilenumbruchs mithilfe des Tags <nobreak>
in Stringressourcen oder in createNoBreakSpan
nutzen. Ebenso können Sie mit dem <nohyphen>
-Tag oder createNoHyphenationSpan
Wörter aus Bindestrichen beibehalten.
Die folgende Stringressource enthält beispielsweise keinen Zeilenumbruch und wird mit dem Text „Pixel 8 Pro.“ gerendert, der an einer unerwünschten Stelle unterbrochen wird:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
Im Gegensatz dazu enthält diese Stringressource das Tag <nobreak>
, das die Wortgruppe „Pixel 8 Pro“ umschließt und Zeilenumbrüche verhindert:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
Der Unterschied in der Darstellung dieser Strings wird in den folgenden Bildern dargestellt:
![](https://developer.android.com/static/about/versions/15/images/line-breaks-none.png?authuser=6&hl=de)
<nobreak>
-Tag umgebrochen ist.![](https://developer.android.com/static/about/versions/15/images/line-breaks-included.png?authuser=6&hl=de)
<nobreak>
-Tag umgebrochen ist.App-Archivierung
Android und Google Play haben letztes Jahr die Unterstützung der App-Archivierung angekündigt. Damit können Nutzer Speicherplatz freigeben, indem sie selten verwendete Apps, die mit Android App Bundle bei Google Play veröffentlicht wurden, teilweise vom Gerät entfernen. Android 15 unterstützt jetzt das Archivieren und Dearchivieren von Apps auf Betriebssystemebene, was die Implementierung für alle App-Shops vereinfacht.
Apps mit der Berechtigung REQUEST_DELETE_PACKAGES
können die Methode PackageInstaller
requestArchive
aufrufen, um die Archivierung eines installierten App-Pakets anzufordern. Dadurch werden das APK und alle im Cache gespeicherten Dateien entfernt, aber die Nutzerdaten bleiben erhalten. Archivierte Apps werden über die LauncherApps
APIs als anzeigbare Apps zurückgegeben. Nutzer sehen eine UI, die darauf hinweist, dass diese Apps archiviert wurden. Wenn ein Nutzer auf eine archivierte Anwendung tippt, erhält das zuständige Installationsprogramm eine Anfrage zum Wieder aktivieren und der Wiederherstellungsprozess kann mit dem ACTION_PACKAGE_ADDED
-Broadcast überwacht werden.
Grafik
Android 15 bietet die neuesten Grafikverbesserungen, einschließlich 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
![Roadmap der bevorstehenden Änderungen bei den Android GPU APIs](https://developer.android.com/static/about/versions/15/images/angle-vulkan-roadmap.png?authuser=6&hl=de)
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 hilft dir weiterhin dabei, die Leistung und Qualität deiner Apps zu verbessern. Mit Android 15 werden neue APIs eingeführt, mit denen Aufgaben in Ihrer App effizienter ausgeführt, die App-Leistung optimiert und Informationen zu Ihren Apps gesammelt werden können.
Best Practices für den Akkuverbrauch, die Fehlerbehebung bei Netzwerk- und Stromverbrauch und Details dazu, wie wir die Akkueffizienz von Hintergrundaufgaben unter Android 15 und neueren Versionen von Android verbessern, finden Sie auf der Google I/O im Artikel Akkueffizienz der Hintergrundarbeit unter Android verbessern.
ApplicationStartInfo-API
In früheren Android-Versionen war das Start-up von Apps eher ein Rätsel. Es war schwierig, in Ihrer App festzustellen, ob sie aus einem kalten, warmen oder heißen Zustand gestartet wurde. Es war auch schwierig zu wissen, wie lange Ihre App in den verschiedenen Startphasen verbracht hat: Verzweigen des Prozesses, Aufrufen von onCreate
, Zeichnen des ersten Frames usw. Als die Application
-Klasse instanziiert wurde, konnten Sie nicht wissen, ob die Anwendung über einen Broadcast, einen Contentanbieter, einen Job, eine Sicherung, den Boot-Abschluss, einen Alarm oder eine Activity
gestartet wurde.
Die ApplicationStartInfo
API unter Android 15 bietet all das und noch mehr. Sie können sogar eigene Zeitstempel in den Ablauf einfügen, um Zeitdaten an einem Ort zu erfassen. Zusätzlich zum Erfassen von Messwerten können Sie ApplicationStartInfo
verwenden, um den Anwendungsstart direkt zu optimieren. So können Sie beispielsweise die kostspielige Instanziierung von UI-bezogenen Bibliotheken in Ihrer Application
-Klasse beim Start Ihrer Anwendung aufgrund einer Übertragung vermeiden.
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 Anwendungen verwaltete Profilerstellung
Android 15 enthält die brandneue ProfilingManager
-Klasse, mit der Sie Profilinformationen direkt in Ihrer App erfassen können. Wir planen, dies mit einer Android Jetpack API zu vereinen, die das Erstellen von Profilanfragen vereinfacht. Die Core API ermöglicht jedoch das Erfassen von Heap-Dumps, Heap-Profilen, Stack-Sampling und mehr. Sie liefert einen Callback für Ihre Anwendung mit einem bereitgestellten Tag, mit dem die Ausgabedatei identifiziert wird. Diese wird an das Dateiverzeichnis Ihrer Anwendung gesendet. Die API begrenzt die Ratenbegrenzung, um die Auswirkungen auf die Leistung zu minimieren.
SQLite-Datenbankverbesserungen
Mit Android 15 werden neue SQLite APIs eingeführt, die erweiterte Features der zugrunde liegenden SQLite-Engine zur Verfügung stellen, die auf bestimmte Leistungsprobleme abzielen, die in Apps auftreten können.
Entwickler sollten sich die Best Practices für die SQLite-Leistung ansehen, um ihre SQLite-Datenbank optimal zu nutzen, insbesondere wenn Sie mit großen Datenbanken arbeiten oder latenzempfindliche Abfragen ausführen.
- Schreibgeschützte verzögerte Transaktionen: Wenn Sie schreibgeschützte Transaktionen ausgeben (ohne Schreibanweisungen), verwenden Sie
beginTransactionReadOnly()
undbeginTransactionWithListenerReadOnly(SQLiteTransactionListener)
, um schreibgeschützteDEFERRED
-Transaktionen auszugeben. Solche Transaktionen können gleichzeitig ausgeführt werden. Wenn sich die Datenbank im WAL-Modus befindet, können sie gleichzeitig mitIMMEDIATE
- oderEXCLUSIVE
-Transaktionen ausgeführt werden. - Zeilenanzahl und -IDs: Es wurden neue APIs hinzugefügt, um die Anzahl der geänderten Zeilen oder die zuletzt eingefügte Zeilen-ID abzurufen, ohne eine zusätzliche Abfrage auszuführen.
getLastChangedRowCount()
gibt die Anzahl der Zeilen zurück, die mit der letzten SQL-Anweisung in der aktuellen Transaktion eingefügt, aktualisiert oder gelöscht wurden.getTotalChangedRowCount()
gibt die Anzahl der aktuellen Verbindung zurück.getLastInsertRowId()
gibt denrowid
der letzten Zeile zurück, die bei der aktuellen Verbindung eingefügt werden soll. - Rohanweisungen: Sie geben eine unbearbeitete SQlite-Anweisung aus und vermeiden dabei Convenience-Wrapper und zusätzlichen Verarbeitungsaufwand.
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 enthält eine Vielzahl von Funktionen, mit denen App-Entwickler die Privatsphäre der Nutzer schützen können.
Bildschirmaufzeichnungserkennung
Unter Android 15 werden Apps unterstützt, die erkennen, dass sie aufgezeichnet werden. Ein Callback wird immer dann ausgelöst, wenn die App innerhalb einer Bildschirmaufzeichnung den Status „Sichtbar“ oder „Unsichtbar“ wechselt. Eine Anwendung gilt als sichtbar, wenn Aktivitäten aufgezeichnet werden, die der UID des Registrierungsprozesses gehören. So können Sie den Nutzer informieren, wenn Ihre Anwendung einen sensiblen Vorgang ausführt, wenn dieser aufgezeichnet wird.
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 präzisere Intent
-Auflösung über UriRelativeFilterGroup
. Es enthält eine Reihe von UriRelativeFilter
-Objekten, die eine Reihe von Intent
-Abgleichregeln bilden, die jeweils erfüllt sein müssen. Dazu gehören URL-Suchparameter, URL-Fragmente sowie Blockier- oder Ausschlussregeln.
Diese Regeln können in der XML-Datei AndroidManifest
mit dem neuen <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 neuen 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" />
<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
<ph type="x-smartling-placeholder">Im privaten Bereich können Nutzer einen separaten Bereich auf ihrem Gerät erstellen, in dem sie Schützt sensible Apps vor neugierigen Blicken – Authentifizierung. Im privaten Bereich wird ein separates Nutzerprofil verwendet. Der Nutzer kann Sie können für den privaten Bereich die Gerätesperre oder einen separaten Sperrfaktor verwenden.
Apps im privaten Bereich werden in einem separaten Container im Launcher angezeigt. sind in der Ansicht „Letzte“, in den Benachrichtigungen, in den Einstellungen und in anderen Apps ausgeblendet wenn der private Bereich gesperrt ist. Von Nutzern erstellte und heruntergeladene Inhalte (z. B. Medien oder Dateien) und Konten zwischen dem privaten Bereich und dem im Hauptbereich. Das System-Sharesheet und das Mit der Bildauswahl können Apps Zugriff auf Inhalte gewähren in Projektbereichen, wenn der private Bereich entsperrt ist.
Nutzer können vorhandene Apps und ihre Daten nicht in den privaten Bereich verschieben. Stattdessen Nutzer wählen im privaten Bereich eine Installationsoption aus, um eine App über welchen App-Store sie bevorzugen. Apps im privaten Bereich werden installiert als separate Kopien von beliebigen Apps im Hauptbereich (neue Kopien derselben App)
Wenn ein Nutzer den privaten Bereich sperrt, wird das Profil beendet. Während das Profil wird beendet, sind Apps im privaten Bereich nicht mehr aktiv und können nicht mehr ausgeführt werden. Aktivitäten im Vordergrund und im Hintergrund, einschließlich der Anzeige von Benachrichtigungen.
Wir empfehlen, deine App im privaten Bereich zu testen, um sicherzustellen, dass deine App wie erwartet funktioniert, insbesondere wenn Ihre App in einen der folgenden Kategorien:
- Apps mit einer Logik für Arbeitsprofile, bei der davon ausgegangen wird, dass alle installierte Kopien ihrer App, die sich nicht im Hauptprofil befinden, befinden sich in der Arbeitsprofil.
- Medizinische Apps
- Launcher-Apps
- App Store-Apps
Zuletzt ausgewählte Nutzerauswahl für den Zugriff auf ausgewählte Fotos abfragen
Wenn der Teilzugriff auf Medienberechtigungen gewährt wurde, ist es jetzt möglich, dass Apps nur die zuletzt ausgewählten Fotos und Videos hervorheben. Diese Funktion kann die Nutzerfreundlichkeit für Apps verbessern, die häufig Zugriff auf Fotos und Videos anfordern. Wenn Sie dieses Feature in Ihrer Anwendung verwenden möchten, aktivieren Sie beim Abfragen von MediaStore
über ContentResolver
das Argument QUERY_ARG_LATEST_SELECTION_ONLY
.
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 enthält die neuesten Erweiterungen rund um Health Connect by Android, eine sichere und zentrale Plattform zum Verwalten und Freigeben von von Apps erhobenen Gesundheits- und Fitnessdaten. Dieses Update unterstützt neue Datentypen für Fitness, Ernährung, Hauttemperatur, Trainingspläne und mehr.
Die Erfassung der Hauttemperatur ermöglicht es Nutzern, genauere Temperaturdaten von einem Wearable oder einem anderen Tracking-Gerät zu speichern und zu teilen.
Trainingspläne sind strukturierte Trainingspläne, die einem Nutzer helfen, seine Fitnessziele zu erreichen. Die Unterstützung für Trainingspläne umfasst eine Vielzahl von Abschluss- und Leistungszielen:
- Abschlussziele in Bezug auf verbrannte Kalorien, Strecke, Dauer, Wiederholung und Schritte.
- Leistungsziele im Hinblick auf so viele Wiederholungen wie möglich (AMRAP), Kadenz, Herzfrequenz, Kraft, wahrgenommene Belastung und Geschwindigkeit.
Weitere Informationen zu den neuesten Updates für Health Connect in Android findest du im Vortrag Building anpassbare Experiences with Android Health von der Google I/O.
Teilfreigabe des Bildschirms
Unter Android 15 wird die Teilfreigabe des Bildschirms unterstützt. Nutzer können also statt des gesamten Gerätebildschirms nur ein App-Fenster teilen oder aufzeichnen. Diese Funktion, die erstmals in Android 14 QPR2 aktiviert wurde, enthält MediaProjection
-Callbacks, mit denen deine App die Teilbildschirmfreigabe anpassen kann. Hinweis: Für Apps, die auf Android 14 (API-Level 34) oder höher ausgerichtet sind, ist jetzt für jede MediaProjection
-Erfassungssitzung eine Nutzereinwilligung erforderlich.
Nutzererfahrung und System-UI
Android 15 bietet App-Entwicklern und Nutzern mehr Kontrolle und Flexibilität bei der Konfiguration von Geräten, die ihren Anforderungen entsprechen.
Weitere Informationen dazu, wie Sie mithilfe der neuesten Verbesserungen in Android 15 die Nutzererfahrung Ihrer App verbessern können, finden Sie im Vortrag von der Google I/O im Artikel zur Verbesserung der Nutzererfahrung in Android 15.
Umfassendere Widget-Vorschauen mit der Generated Previews API
Vor Android 15 bestand die einzige Möglichkeit zur Bereitstellung von Vorschauen für die Widget-Auswahl darin, eine statische Bild- oder Layoutressource anzugeben. Diese Vorschauen unterscheiden sich häufig deutlich vom Aussehen des eigentlichen 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 von seinem Widget erstellen oder ein XML-Layout erstellen, um eine Widgetvorschau zu erhalten.
Unter Android 15 werden generierte Vorschauen unterstützt. Anbieter von App-Widgets können also RemoteViews
generieren und als Auswahlvorschau anstelle einer statischen Ressource verwenden.
![](https://developer.android.com/static/about/versions/15/images/generated-previews.png?authuser=6&hl=de)
Push-API
Apps können generierte Vorschauen über eine Push API bereitstellen. Anwendungen können jederzeit in ihrem Lebenszyklus Vorschauen bereitstellen. Sie erhalten keine explizite Anfrage vom Host, eine Vorschau bereitzustellen. Vorschauen werden in AppWidgetService
beibehalten und können von Hosts bei Bedarf angefordert 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 lautet:
- Der Widget-Anbieter ruft jederzeit
setWidgetPreview
auf. Die bereitgestellten Vorschauen werden zusammen mit anderen Anbieterinformationen inAppWidgetService
beibehalten. setWidgetPreview
benachrichtigt Hosts über denAppWidgetHost.onProvidersChanged
-Callback über eine aktualisierte Vorschau. Daraufhin werden vom Widget-Host alle Anbieterinformationen neu geladen.- Beim Anzeigen einer Widgetvorschau prüft der Host
AppWidgetProviderInfo.generatedPreviewCategories
. Wenn die ausgewählte Kategorie verfügbar ist, ruft erAppWidgetManager.getWidgetPreview
auf, um die gespeicherte Vorschau für diesen Anbieter zurückzugeben.
Wann Sie setWidgetPreview
anrufen sollten
Da es keinen Callback für die Bereitstellung von Vorschauen gibt, können Apps jederzeit während der Ausführung Vorschauen senden. 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 die Vorschau beschrieben:
- Anbieter, die in der Widget-Vorschau echte Daten zeigen, z. B. personalisierte oder aktuelle Informationen. Diese Anbieter können die Vorschau festlegen, sobald sich der Nutzer angemeldet oder eine Erstkonfiguration in der App vorgenommen hat. Danach können sie eine regelmäßige Aufgabe einrichten, um die Vorschauen im gewünschten Rhythmus zu aktualisieren. Ein solcher Widget-Typ kann beispielsweise ein Foto-, Kalender-, Wetter- oder Nachrichten-Widget sein.
- Anbieter, die statische Informationen in Vorschauen oder Quick-Action-Widgets anzeigen, aber keine Daten enthalten. Diese Anbieter können eine Vorschau beim ersten Start der App festlegen. Beispiele für diese Art von Widget sind ein Drive-Schnellaktionen-Widget oder ein Chrome-Verknüpfungs-Widget.
Einige Anbieter zeigen in der Hub-Modusauswahl möglicherweise eine statische Vorschau, aber echte Informationen in der Auswahl auf dem Startbildschirm. Diese Anbieter sollten die Richtlinien für beide Anwendungsfälle befolgen, um Vorschauen festzulegen.
Die Funktion „Bild im Bild“
Mit Android 15 wurden neue Änderungen für den Bild-im-Bild-Modus (BiB) eingeführt, die einen noch reibungsloseren Übergang beim Wechsel in den BiB-Modus ermöglichen. Dies ist vorteilhaft für Apps, bei denen UI-Elemente über der Haupt-UI, die in BiB eingefügt wird, eingeblendet werden.
Entwickler verwenden den onPictureInPictureModeChanged
-Callback, um eine Logik zu definieren, die die Sichtbarkeit der eingeblendeten UI-Elemente ein-/ausschaltet. Dieser Callback wird ausgelöst, wenn die BiB-Animation zum Starten oder Beenden abgeschlossen ist. Ab Android 15 enthält die Klasse PictureInPictureUiState
einen neuen Status.
Mit diesem neuen UI-Status beobachten Apps, die auf Android 15 ausgerichtet sind, den Activity#onPictureInPictureUiStateChanged
-Callback, der mit isTransitioningToPip()
aufgerufen wird, sobald die BiB-Animation beginnt. Es gibt viele UI-Elemente, die für die App im BiB-Modus nicht relevant sind, z. B. Ansichten oder Layout, die Informationen wie Vorschläge, kommende Videos, Bewertungen und Titel enthalten. Wenn die App in den BiB-Modus wechselt, verwende den onPictureInPictureUiStateChanged
-Callback, um diese UI-Elemente auszublenden. Wenn die App vom BiB-Fenster in den Vollbildmodus wechselt, kannst du diese Elemente mit dem onPictureInPictureModeChanged
-Callback 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 Ein-/Aus-Schaltfläche, mit der irrelevante UI-Elemente (für ein BiB-Fenster) schnell sichtbar sind, lässt sich die BiB-Animation ohne Flimmern reibungsloser starten.
Verbesserte „Bitte nicht stören“-Regeln
Mit AutomaticZenRule
können Apps die Regeln für die Geräuschunterdrückung (Bitte nicht stören) anpassen und entscheiden, wann sie aktiviert oder deaktiviert werden sollen. Unter Android 15 werden diese Regeln erheblich verbessert, um die Nutzererfahrung zu verbessern. Die folgenden Verbesserungen wurden vorgenommen:
- Typen werden zu
AutomaticZenRule
hinzugefügt. Dadurch kann das System einige Regeln gesondert behandeln. AutomaticZenRule
wird ein Symbol hinzugefügt, damit die Modi besser erkennbar sind.- Einen
triggerDescription
-String zuAutomaticZenRule
hinzufügen, der die Bedingungen beschreibt, unter denen die Regel für den Nutzer aktiviert werden soll. ZenDeviceEffects
wurde zuAutomaticZenRule
hinzugefügt. Damit können Regeln wie die Graustufenanzeige, den Nachtmodus oder das Dimmen des Hintergrunds ausgelöst werden.
VibrationEffect für Benachrichtigungskanäle festlegen
Android 15 unterstützt das Festlegen von starken Vibrationen für eingehende Benachrichtigungen nach Kanal mit NotificationChannel.setVibrationEffect
. So können Nutzer zwischen verschiedenen Arten von Benachrichtigungen unterscheiden, ohne auf ihr Gerät sehen zu müssen.
Große Bildschirme und Formfaktoren
Android 15 bietet Ihren Apps die Möglichkeit, die Formfaktoren von Android, einschließlich großer Displays, klappbarer und faltbarer Geräte, optimal zu nutzen.
Verbessertes Multitasking auf großen Bildschirmen
Mit Android 15 ist Multitasking auf Geräten mit großen Bildschirmen noch einfacher. Nutzer können beispielsweise ihre bevorzugten Kombinationen für Apps mit geteiltem Bildschirm speichern, um schnell darauf zuzugreifen, und die Taskleiste auf dem Bildschirm anpinnen, um schnell zwischen Apps zu wechseln. Deshalb ist es wichtiger denn je, dass Ihre App anpassungsfähig ist.
Auf der Google I/O finden Sie hilfreiche Sitzungen zu den Themen Adaptive Android-Apps erstellen und UI mit der adaptiven Material 3-Bibliothek erstellen. In unserer Dokumentation finden Sie weitere Informationen zum Design für große Bildschirme.
Unterstützung für Coverdisplay
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
Android 15 aktualisiert die Plattform, damit Ihre App auf die neuesten Fortschritte in den Bereichen Kommunikation und Funktechnologien zugreifen kann.
Satellitensupport
Android 15 erweitert die Plattformunterstützung für Satellitenverbindungen weiter und enthält einige UI-Elemente, um eine einheitliche Nutzererfahrung in der gesamten Landschaft der Satellitenkonnektivität zu gewährleisten.
Apps können ServiceState.isUsingNonTerrestrialNetwork()
verwenden, um zu erkennen, wann ein Gerät mit einem Satelliten verbunden ist. So wissen sie besser, warum vollständige Netzwerkdienste möglicherweise nicht verfügbar sind. Darüber hinaus bietet Android 15 Unterstützung für SMS- und MMS-Apps sowie vorinstallierte RCS-Apps, um über die Satellitenverbindung Nachrichten zu senden und zu empfangen.
![](https://developer.android.com/static/about/versions/15/images/satellite-notification.png?authuser=6&hl=de)
Reibungslosere 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 kannst du die Sicherheit deiner App verbessern, die Daten deiner App schützen und Nutzern mehr Transparenz und Kontrolle über ihre Daten bieten. Im Vortrag von Google I/O unter Nutzersicherheit auf Android-Geräten schützen erfahren Sie mehr darüber, wie wir die Nutzersicherheit verbessern und Ihre App vor neuen Bedrohungen schützen.
Anmeldedaten-Manager in 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 durch einmaliges Tippen in biometrische Aufforderungen einbinden
Credential Manager integrates biometric prompts into the credential creation and sign-in processes, eliminating the need for providers to manage biometric prompts. As a result, credential providers only need to focus on the results of the create and get flows, augmented with the biometric flow result. This simplified process creates a more efficient and streamlined credential creation and retrieval process.
Schlüsselverwaltung für 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 neue 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 zusätzliche Funktionen, die die Nutzerfreundlichkeit ergänzen, wenn ein Gerät in verschiedenen Sprachen verwendet wird.
Schriftart der Variablen CJK
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.
![](https://developer.android.com/static/about/versions/15/images/cjk-variable-font.png?authuser=6&hl=de)
Zeichenblockierung
Ab Android 15 kann Text mithilfe von JUSTIFICATION_MODE_INTER_CHARACTER
unter Verwendung von Buchstabenabstand im Blocksatz ausgerichtet werden. Die Inter-Wort-Begründung wurde erstmals in Android 8.0 (API-Ebene 26) eingeführt. Diese bietet ähnliche Möglichkeiten für Sprachen, die das Leerzeichen zur Segmentierung verwenden, z. B. Chinesisch, Japanisch und andere.
![](https://developer.android.com/static/about/versions/15/images/none-japanese.png?authuser=6&hl=de)
JUSTIFICATION_MODE_NONE
.![](https://developer.android.com/static/about/versions/15/images/none-english.png?authuser=6&hl=de)
JUSTIFICATION_MODE_NONE
.![](https://developer.android.com/static/about/versions/15/images/inter-word-japanese.png?authuser=6&hl=de)
JUSTIFICATION_MODE_INTER_WORD
.![](https://developer.android.com/static/about/versions/15/images/inter-word-english.png?authuser=6&hl=de)
JUSTIFICATION_MODE_INTER_WORD
.![](https://developer.android.com/static/about/versions/15/images/inter-character-japanese.png?authuser=6&hl=de)
JUSTIFICATION_MODE_INTER_CHARACTER
.![](https://developer.android.com/static/about/versions/15/images/inter-character-english.png?authuser=6&hl=de)
JUSTIFICATION_MODE_INTER_CHARACTER
.Automatischen Zeilenumbruch konfigurieren
Ab Android 13 (API-Level 33) unterstützt Android nun auch textbasierte Zeilenumbrüche für Japanisch und Koreanisch. Wortgruppenbasierte Zeilenumbrüche verbessern zwar die Lesbarkeit kurzer Textzeilen, funktionieren aber nicht gut bei langen Textzeilen.
In Android 15 können Apps jetzt mit der Option LINE_BREAK_WORD_STYLE_AUTO
jetzt wortgruppenbasierte Zeilenumbrüche nur auf kurze Textzeilen anwenden. Mit dieser Option wird die beste Wortstiloption für den Text ausgewählt.
Für kurze Textzeilen werden sitzungsbasierte Zeilenumbrüche verwendet, die genauso wie LINE_BREAK_WORD_STYLE_PHRASE
funktionieren, wie in der folgenden Abbildung gezeigt:
![](https://developer.android.com/static/about/versions/15/images/line-break-auto-short.png?authuser=6&hl=de)
LINE_BREAK_WORD_STYLE_AUTO
sitzungsspezifische Zeilenumbrüche angewendet, um die Lesbarkeit des Textes zu verbessern.
Dies entspricht dem Anwenden von LINE_BREAK_WORD_STYLE_PHRASE
.Bei längeren Textzeilen verwendet LINE_BREAK_WORD_STYLE_AUTO
einen Wortstil ohne Zeilenumbrüche und funktioniert genauso wie LINE_BREAK_WORD_STYLE_NONE
, wie in der folgenden Abbildung gezeigt:
![](https://developer.android.com/static/about/versions/15/images/line-break-auto-long.png?authuser=6&hl=de)
LINE_BREAK_WORD_STYLE_AUTO
keinen Zeilenumbruchstil an, um die Lesbarkeit des Textes zu verbessern.
Dies entspricht dem Anwenden von LINE_BREAK_WORD_STYLE_NONE
.Neue japanische Schriftart Hentaigana
In Android 15 ist eine neue Schriftartdatei für das alte japanische Hiragana (Hentaigana) standardmäßig gebündelt. Die einzigartigen Formen der Hentaigana-Figuren können den Kunstwerken oder dem Design ein besonderes Flair verleihen und gleichzeitig dazu beitragen, die genaue Übertragung und das Verständnis antiker japanischer Dokumente zu bewahren.
![](https://developer.android.com/static/about/versions/15/images/hentaigana-font.png?authuser=6&hl=de)
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.