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.google.cn/static/about/versions/15/images/hdr-headroom.png?authuser=8&hl=de)
Lautstärkeregelung
Mit Android 15 werden nun CTA-2075-Lautheitsstandard, der Ihnen hilft, Vermeiden Sie Inkonsistenzen bei der Audiolautstärke und stellen Sie sicher, dass Nutzer sich nicht ständig darum kümmern müssen, Lautstärke beim Wechsel zwischen Inhalten anpassen. Das System nutzt bekannte die Eigenschaften der Ausgabegeräte (Kopfhörer und Lautsprecher) sowie Lautheitsmetadaten in AAC-Audioinhalten, um die Lautstärke Lautstärke und Kompressionsstufen des dynamischen Bereichs.
Um diese Funktion zu aktivieren, müssen Lautheitsmetadaten verfügbar sein in
und die Plattformfunktion
in Ihrer App aktivieren. Dazu müssen Sie
instanziieren Sie ein LoudnessCodecController
-Objekt, indem Sie
die Factory-Methode create mit der Audio-Datei
Sitzungs-ID aus dem verknüpften AudioTrack
dies
werden automatisch Audio-Updates angewendet. Sie können eine
OnLoudnessCodecUpdateListener
zum Ändern oder Filtern
lautheitsparameter, bevor sie auf den
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 wird ebenfalls für die Verwendung der
LoudnessCodecController
APIs für eine nahtlose App-Integration
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.google.cn/static/about/versions/15/images/pdf-rendering.png?authuser=8&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
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 Steuerelemente für Zeilenumbrüche
Ab Android 15 werden ein TextView
und die zugrunde liegende
Mit dem Zeilenumbruch kann der gegebene Teil des Textes in derselben Zeile beibehalten werden,
Lesbarkeit. Sie können diese Anpassungen für Zeilenumbrüche nutzen, indem Sie
das Tag <nobreak>
in Stringressourcen oder
createNoBreakSpan
Ebenso können Sie Wörter aus
mit dem Tag <nohyphen>
oder
createNoHyphenationSpan
Die folgende Stringressource enthält beispielsweise keinen Zeilenumbruch und wird mit dem Text „Pixel 8 Pro“ gerendert. an einer unerwünschten Stelle einbrechen:
<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 den
Wortgruppe „Pixel 8 Pro“. und verhindert Zeilenumbrüche:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
Der Unterschied beim Rendern dieser Strings ist in den folgenden Bilder:
![](https://developer.android.google.cn/static/about/versions/15/images/line-breaks-none.png?authuser=8&hl=de)
<nobreak>
-Tag umschlossen.![](https://developer.android.google.cn/static/about/versions/15/images/line-breaks-included.png?authuser=8&hl=de)
<nobreak>
-Tag umschlossen.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.google.cn/static/about/versions/15/images/angle-vulkan-roadmap.png?authuser=8&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
Android 15 引入了新的 SQLite API,可提供底层 SQLite 引擎的高级功能,这些功能旨在解决应用中可能出现的特定性能问题。
开发者应查阅 SQLite 性能最佳实践,以充分利用其 SQLite 数据库,尤其是在使用大型数据库或运行对延迟敏感的查询时。
- 只读延迟事务:发出只读事务(不包括写入语句)时,使用
beginTransactionReadOnly()
和beginTransactionWithListenerReadOnly(SQLiteTransactionListener)
发出只读DEFERRED
事务。此类事务可以相互并发运行,如果数据库处于 WAL 模式,则它们可以与IMMEDIATE
或EXCLUSIVE
事务并发运行。 - 行数和 ID:新增了 API,用于检索已更改的行的计数或最后插入的行 ID,而无需发出额外的查询。
getLastChangedRowCount()
返回当前事务中的最新 SQL 语句插入、更新或删除的行数,而getTotalChangedRowCount()
返回当前连接的相关计数。getLastInsertRowId()
返回要在当前连接上插入的最后一行的rowid
。 - 原始语句:发出原始 SQlite 语句,绕过便捷封装容器以及它们可能产生的任何其他处理开销。
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
Android 15 unterstützt Apps, um zu erkennen, dass sie aufgezeichnet werden. Ein Callback wird immer dann aufgerufen, wenn die Anwendung wechselt ob sie innerhalb einer Bildschirmaufzeichnung sichtbar oder unsichtbar sind. Eine App ist als sichtbar gelten, wenn Aktivitäten, die zur UID des Registrierungsprozesses gehören, aufgezeichnet wird. Wenn Ihre App einen vertraulichen Vorgang ausführt, kann den Nutzer über die Aufzeichnung informieren.
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 durch
UriRelativeFilterGroup
mit einer Reihe von
UriRelativeFilter
-Objekte, die einen Satz von Intent
bilden
die jeweils erfüllt werden müssen, einschließlich URL-Suchparameter, URL-
Fragmenten und Blockier- oder Ausschlüsse.
Diese Regeln können in der XML-Datei AndroidManifest
mit dem neuen
<uri-relative-filter-group>
-Tag, das optional einen
android:allow
. Diese Tags können <data>
-Tags enthalten, für die vorhandene Daten verwendet werden
Tag-Attribute sowie die neuen android:query
und android:fragment
Attribute.
Hier ein Beispiel für die Syntax AndroidManifest
:
<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
私密空间可让用户在设备上创建单独的空间 保护敏感应用免遭窥探, 身份验证。私密空间使用单独的用户个人资料。用户可以 选择为私密空间使用设备锁定或单独的锁定因素。
私密空间中的应用显示在启动器中的单独容器中,并且 不会显示在“最近用过”视图、通知、设置和其他应用中 在私密空间处于锁定状态时显示通知用户生成的内容(例如 媒体或文件),而账号会在私密空间和 主空间系统 Sharesheet 和 照片选择器:用于授权应用访问内容
用户无法将现有应用及其数据移至私密空间。相反, 用户在私密空间中选择安装选项,以便使用 无论他们喜欢哪家应用商店私密空间中的应用会以下列身份安装: 来自主空间中任何应用的单独副本(同一应用的新副本)。
当用户锁定私密空间后,系统会停用相应个人资料。而配置文件 已停止,私密空间中的应用不再有效,无法执行 前台或后台 activity,包括显示通知。
我们建议您使用私密空间测试您的应用,以确保您的应用 按预期运行,尤其是当应用属于以下某种情况时 类别:
- 具有工作资料逻辑的应用(假定任何 不在主资料中的已安装应用副本 工作资料。
- 医疗应用
- 启动器应用
- 应用商店中的应用
Zuletzt ausgewählte Nutzerauswahl für den Zugriff auf ausgewählte Fotos abfragen
Apps können jetzt nur die zuletzt ausgewählten Fotos hervorheben
und Videos, wenn der teilweise Zugriff auf Medienberechtigungen gewährt wird. Dieses
kann die User Experience für Apps verbessern, die häufig
auf Fotos und Videos zugreifen. Um diese Funktion in deiner App zu verwenden, aktiviere die
Argument QUERY_ARG_LATEST_SELECTION_ONLY
beim Abfragen von MediaStore
bis ContentResolver
.
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, Vorschauen für die Widget-Auswahl bereitzustellen, Eine statische Bild- oder Layoutressource Diese Vorschauen unterscheiden sich oft stark vom Aussehen des Widgets abhebt, wenn es auf der Wohnung platziert wird. Bildschirm. Außerdem können mit Jetpack Glance keine statischen Ressourcen erstellt werden. Die Live-Anzeige mussten Entwickler Screenshots des Widgets erstellen oder ein XML-Layout erstellen, um eine Vorschau des Widgets.
Android 15 unterstützt jetzt generierte Vorschauen. Das App-Widget
Anbieter können stattdessen RemoteViews
generieren, um sie als Vorschau für die Auswahl zu verwenden.
einer statischen Ressource.
![](https://developer.android.google.cn/static/about/versions/15/images/generated-previews.png?authuser=8&hl=de)
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
beibehalten,
die Organisatoren diese bei Bedarf anfordern können. Im folgenden Beispiel wird ein XML-Widget geladen
Layout-Ressource und legt sie als Vorschau fest:
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. Das angegebene 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. Häufigkeit der Aktualisierung der Vorschau 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 Fotos, Kalender, Wetter oder Nachrichten. Widget.
- Anbieter, die statische Informationen in Vorschauen oder Schnellaktionen-Widgets anzeigen die keine Daten anzeigen. 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 möglicherweise statische Vorschauen in der Hub-Modus-Auswahl an, aber echte zur Auswahl des Startbildschirms. 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 eine einheitliche weichere Übergänge beim Wechsel in den BiB-Modus. Dies ist hilfreich für Apps mit UI-Elementen, die über der Hauptbenutzeroberfläche eingeblendet werden und in BiB einfügen
Entwickler verwenden den onPictureInPictureModeChanged
-Callback, um die Logik zu definieren
die die Sichtbarkeit
der eingeblendeten UI-Elemente ein-/ausschaltet. Dieser Callback ist
wird ausgelöst, wenn die BiB-Animation zum Ein- oder Ausschalten abgeschlossen ist. Beginnt in
In Android 15 enthält die Klasse PictureInPictureUiState
einen neuen Status.
Bei diesem neuen UI-Status gilt für Apps, die auf Android 15 ausgerichtet sind,
Activity#onPictureInPictureUiStateChanged
-Callback wird aufgerufen mit
isTransitioningToPip()
, sobald die BiB-Animation beginnt. Es gibt
viele UI-Elemente, die für die App im BiB-Modus nicht relevant sind,
Beispielansichten oder Layouts, die Informationen wie Vorschläge, bevorstehende
Videos, Bewertungen und Titel. Wenn die App in den BiB-Modus wechselt, verwende die
onPictureInPictureUiStateChanged
-Callback zum Ausblenden dieser UI-Elemente. Wenn der Parameter
wenn die App vom BiB-Fenster in den Vollbildmodus wechselt, verwenden Sie
onPictureInPictureModeChanged
-Callback zum Einblenden dieser Elemente, wie in
die folgenden Beispiele:
override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {
if (pipState.isTransitioningToPip()) {
// Hide UI elements
}
}
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
if (isInPictureInPictureMode) {
// Unhide UI elements
}
}
Diese Ein/Aus-Schaltfläche für die schnelle Sichtbarkeit irrelevanter UI-Elemente (für ein BiB-Fenster) hilft sorgen für eine flüssigere und flimmernde BiB-Animation.
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.google.cn/static/about/versions/15/images/satellite-notification.png?authuser=8&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.google.cn/static/about/versions/15/images/cjk-variable-font.png?authuser=8&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.google.cn/static/about/versions/15/images/none-japanese.png?authuser=8&hl=de)
JUSTIFICATION_MODE_NONE
.![](https://developer.android.google.cn/static/about/versions/15/images/none-english.png?authuser=8&hl=de)
JUSTIFICATION_MODE_NONE
.![](https://developer.android.google.cn/static/about/versions/15/images/inter-word-japanese.png?authuser=8&hl=de)
JUSTIFICATION_MODE_INTER_WORD
.![](https://developer.android.google.cn/static/about/versions/15/images/inter-word-english.png?authuser=8&hl=de)
JUSTIFICATION_MODE_INTER_WORD
.![](https://developer.android.google.cn/static/about/versions/15/images/inter-character-japanese.png?authuser=8&hl=de)
JUSTIFICATION_MODE_INTER_CHARACTER
.![](https://developer.android.google.cn/static/about/versions/15/images/inter-character-english.png?authuser=8&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.google.cn/static/about/versions/15/images/line-break-auto-short.png?authuser=8&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.google.cn/static/about/versions/15/images/line-break-auto-long.png?authuser=8&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.google.cn/static/about/versions/15/images/hentaigana-font.png?authuser=8&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.