Présentation des fonctionnalités et des API

Android 14 offre aux développeurs d'excellentes fonctionnalités et API. Les sections suivantes vous permettent d'en savoir plus sur les fonctionnalités de vos applications et de faire vos premiers pas avec les API associées.

Pour obtenir une liste détaillée des API ajoutées, modifiées et supprimées, consultez le rapport de différences des API. Pour en savoir plus sur les API ajoutées, consultez la documentation de référence des API Android. Pour Android 14, recherchez les API ajoutées au niveau d'API 34. Pour en savoir plus sur les domaines dans lesquels les modifications de la plate-forme peuvent affecter vos applications, consultez les modifications de comportement d'Android 14 pour les applications qui ciblent Android 14 et pour toutes les applications.

Internationalisation

Préférences linguistiques par application

Android 14 expands on the per-app language features that were introduced in Android 13 (API level 33) with these additional capabilities:

  • Automatically generate an app's localeConfig: Starting with Android Studio Giraffe Canary 7 and AGP 8.1.0-alpha07, you can configure your app to support per-app language preferences automatically. Based on your project resources, the Android Gradle plugin generates the LocaleConfig file and adds a reference to it in the final manifest file, so you no longer have to create or update the file manually. AGP uses the resources in the res folders of your app modules and any library module dependencies to determine the locales to include in the LocaleConfig file.

  • Dynamic updates for an app's localeConfig: Use the setOverrideLocaleConfig() and getOverrideLocaleConfig() methods in LocaleManager to dynamically update your app's list of supported languages in the device's system settings. Use this flexibility to customize the list of supported languages per region, run A/B experiments, or provide an updated list of locales if your app utilizes server-side pushes for localization.

  • App language visibility for input method editors (IMEs): IMEs can utilize the getApplicationLocales() method to check the language of the current app and match the IME language to that language.

API Grammatical Inflection

3 milliards de personnes parlent des langues genrées : des langues dont les catégories grammaticales, telles que les noms, verbes, adjectifs et prépositions, s'accordent en fonction du genre des personnes et des objets auxquels on s'adresse ou dont on parle. Traditionnellement, de nombreuses langues genrées utilisent le genre grammatical masculin comme genre par défaut ou générique.

S'adresser à une personne en utilisant le mauvais genre grammatical, par exemple s'adresser à une femme en utilisant le genre masculin, peut avoir un impact négatif sur ses performances et son attitude. En revanche, une interface utilisateur dont le langage reflète correctement le genre grammatical de l'utilisateur ou de l'utilisatrice peut améliorer l'engagement et fournir une expérience utilisateur plus personnalisée et naturelle.

Pour vous aider à localiser une UI axée sur l'utilisateur dans une langue genrée, Android 14 introduit l'API Grammatical Inflection, qui permet d'ajouter une prise en charge du genre grammatical sans refactoriser votre application.

Préférences régionales

Les préférences régionales permettent aux utilisateurs de personnaliser les unités de température, le premier jour de la semaine et les systèmes de numérotation. Une personne européenne vivant aux États-Unis peut préférer que les unités de température soient exprimées en Celsius plutôt qu'en Fahrenheit, et que les applications considèrent le lundi comme le début de la semaine et non le dimanche, comme c'est le cas aux États-Unis.

Les nouveaux menus des paramètres Android correspondant à ces préférences offrent aux utilisateurs un emplacement centralisé et visible pour modifier les préférences des applications. Ces préférences sont également conservées lors de la sauvegarde et de la restauration. Plusieurs API et intents, tels que getTemperatureUnit et getFirstDayOfWeek, autorisent votre application l'accès en lecture aux préférences utilisateur afin que votre application puisse ajuster la façon dont elle affiche les informations. Vous pouvez également enregistrer un BroadcastReceiver sur ACTION_LOCALE_CHANGED pour gérer les modifications de configuration des paramètres régionaux lorsque les préférences régionales changent.

Pour accéder à ces paramètres, ouvrez l'application Paramètres et accédez à System > Languages & input > Regional preferences (Système > Langues et saisie > Préférences régionales).

Écran des préférences régionales dans les paramètres système Android.
Options de température pour les préférences régionales dans les paramètres système Android

Accessibilité

Mise à l'échelle non linéaire de la police à 200 %

Starting in Android 14, the system supports font scaling up to 200%, providing low-vision users with additional accessibility options that align with Web Content Accessibility Guidelines (WCAG).

To prevent large text elements on screen from scaling too large, the system applies a nonlinear scaling curve. This scaling strategy means that large text doesn't scale at the same rate as smaller text. Nonlinear font scaling helps preserve the proportional hierarchy between elements of different sizes while mitigating issues with linear text scaling at high degrees (such as text being cut off or text that becomes harder to read due to an extremely large display sizes).

Test your app with nonlinear font scaling

Enable the maximum font size in a device's accessibility settings to test your app.

If you already use scaled pixels (sp) units to define text sizing, then these additional options and scaling improvements are applied automatically to the text in your app. However, you should still perform UI testing with the maximum font size enabled (200%) to ensure that your app applies the font sizes correctly and can accommodate larger font sizes without impacting usability.

To enable 200% font size, follow these steps:

  1. Open the Settings app and navigate to Accessibility > Display size and text.
  2. For the Font size option, tap the plus (+) icon until the maximum font size setting is enabled, as shown in the image that accompanies this section.

Use scaled pixel (sp) units for text-sizes

Remember to always specify text sizes in sp units. When your app uses sp units, Android can apply the user's preferred text size and scale it appropriately.

Don't use sp units for padding or define view heights assuming implicit padding: with nonlinear font scaling sp dimensions might not be proportional, so 4sp + 20sp might not equal 24sp.

Convert scaled pixel (sp) units

Use TypedValue.applyDimension() to convert from sp units to pixels, and use TypedValue.deriveDimension() to convert pixels to sp. These methods apply the appropriate nonlinear scaling curve automatically.

Avoid hardcoding equations using Configuration.fontScale or DisplayMetrics.scaledDensity. Because font scaling is nonlinear, the scaledDensity field is no longer accurate. The fontScale field should be used for informational purposes only because fonts are no longer scaled with a single scalar value.

Use sp units for lineHeight

Always define android:lineHeight using sp units instead of dp, so the line height scales along with your text. Otherwise, if your text is sp but your lineHeight is in dp or px, it doesn't scale and looks cramped. TextView automatically corrects the lineHeight so that your intended proportions are preserved, but only if both textSize and lineHeight are defined in sp units.

Appareil photo et contenus multimédias

Ultra HDR pour les images

Illustration entre la qualité d'image HDR (Standard Dynamic Range) et la qualité d'image HDR (High Dynamic Range).

Android 14 est compatible avec les images HDR (High Dynamic Range) qui conservent une plus grande partie des informations du capteur lorsque vous prenez une photo, ce qui permet d'obtenir des couleurs vives et un contraste plus élevé. Android utilise le format Ultra HDR, qui est entièrement rétrocompatible avec les images JPEG, ce qui permet aux applications d'interagir de manière fluide avec les images HDR, en les affichant en plage dynamique standard (SDR) si nécessaire.

Le rendu de ces images dans l'interface utilisateur en HDR est effectué automatiquement par le framework lorsque votre application accepte d'utiliser l'interface utilisateur HDR pour sa fenêtre d'activité, soit via une entrée de fichier manifeste, soit au moment de l'exécution en appelant Window.setColorMode(). Vous pouvez également capturer des images fixes Ultra HDR compressées sur les appareils compatibles. En récupérant davantage de couleurs à partir du capteur, vous pouvez effectuer des modifications dans l'application de façon plus flexible. Le Gainmap associé aux images Ultra HDR peut être utilisé pour les afficher à l'aide d'OpenGL ou de Vulkan.

Zoom, Mise au point, Postview et plus dans les extensions Appareil photo

Android 14 upgrades and improves camera extensions, allowing apps to handle longer processing times, which enables improved images using compute-intensive algorithms like low-light photography on supported devices. These features give users an even more robust experience when using camera extension capabilities. Examples of these improvements include:

Zoom dans le capteur

Lorsque REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE dans CameraCharacteristics contient SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW, votre application peut utiliser les fonctionnalités avancées du capteur pour donner à un flux RAW recadré les mêmes pixels que le champ de vision complet en utilisant un CaptureRequest avec une cible RAW dont le cas d'utilisation du flux est défini sur CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW. En implémentant les commandes de forçage de la requête, la caméra mise à jour permet aux utilisateurs de contrôler le zoom avant même que les autres commandes de la caméra soient prêtes.

Audio USB sans perte

Android 14 prend en charge les formats audio sans perte pour les expériences de niveau audiophile via les casques USB filaires. Vous pouvez interroger un appareil USB pour connaître ses attributs de mélangeur préférés, enregistrer un écouteur pour connaître les modifications de ces attributs et configurer ces attributs à l'aide de la classe AudioMixerAttributes. Cette classe représente le format, tel que le masque de canal, le taux d'échantillonnage et le comportement du mélangeur audio. La classe permet d'envoyer directement du contenu audio, sans mixage, ajustement du volume ni effets de traitement.

Productivité et outils des développeurs

Credential Manager

Android 14 adds Credential Manager as a platform API, with additional support back to Android 4.4 (API level 19) devices through a Jetpack Library using Google Play services. Credential Manager aims to make sign-in easier for users with APIs that retrieve and store credentials with user-configured credential providers. Credential Manager supports multiple sign-in methods, including username and password, passkeys, and federated sign-in solutions (such as Sign-in with Google) in a single API.

Passkeys provide many advantages. For example, passkeys are built on industry standards, can work across different operating systems and browser ecosystems, and can be used with both websites and apps.

For more information, see the Credential Manager and passkeys documentation and the blogpost about Credential Manager and passkeys.

Santé Connect

Santé Connect est un dépôt sur l'appareil contenant les données de santé et de remise en forme des utilisateurs. Il permet aux utilisateurs de partager des données entre leurs applications préférées, avec un seul endroit pour contrôler les données qu'ils souhaitent partager avec ces applications.

Sur les appareils exécutant des versions d'Android antérieures à Android 14, Santé Connect peut être téléchargée en tant qu'application sur le Google Play Store. À partir d'Android 14, Santé Connect fait partie de la plate-forme et reçoit les mises à jour via les mises à jour du système Google Play sans qu'un téléchargement distinct soit nécessaire. Santé Connect peut ainsi être mis à jour fréquemment, et vos applications peuvent s'assurer que Santé Connect est disponible sur les appareils équipés d'Android 14 ou version ultérieure. Les utilisateurs peuvent accéder à Santé Connect depuis les paramètres de leur appareil, et les paramètres de confidentialité sont intégrés aux paramètres système.

Les utilisateurs peuvent commencer à utiliser Santé Connect sans télécharger d'application distincte sur les appareils équipés d'Android 14 ou version ultérieure.
Les utilisateurs peuvent contrôler quelles applications ont accès à leurs données de santé et de remise en forme via les paramètres système.

Santé Connect inclut plusieurs nouvelles fonctionnalités dans Android 14, comme les parcours sportifs, qui permettent aux utilisateurs de partager un parcours de leur entraînement qui peut être visualisé sur une carte. Un itinéraire est défini comme une liste de lieux enregistrés pendant une période donnée. Votre application peut insérer des itinéraires dans des sessions d'exercice, en les associant. Pour s'assurer que les utilisateurs ont un contrôle total sur ces données sensibles, ils doivent autoriser le partage de routes individuelles avec d'autres applications.

Pour en savoir plus, consultez la documentation de Santé Connection et l'article de blog sur les Nouveautés d'Android Health.

Mises à jour OpenJDK 17

Android 14 continues the work of refreshing Android's core libraries to align with the features in the latest OpenJDK LTS releases, including both library updates and Java 17 language support for app and platform developers.

The following features and improvements are included:

  • Updated approximately 300 java.base classes to Java 17 support.
  • Text Blocks, which introduce multi-line string literals to the Java programming language.
  • Pattern Matching for instanceof, which allows an object to be treated as having a specific type in an instanceof without any additional variables.
  • Sealed classes, which allow you restrict which classes and interfaces can extend or implement them.

Thanks to Google Play system updates (Project Mainline), over 600 million devices are enabled to receive the latest Android Runtime (ART) updates that include these changes. This is part of our commitment to give apps a more consistent, secure environment across devices, and to deliver new features and capabilities to users independent of platform releases.

Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Améliorations apportées aux plates-formes de téléchargement d'applications

Android 14 introduit plusieurs API PackageInstaller qui permettent aux plates-formes de téléchargement d'applications d'améliorer leur expérience utilisateur.

Demander l'autorisation de l'installation avant le téléchargement

L'installation ou la mise à jour d'une application peut nécessiter l'approbation de l'utilisateur. Par exemple, lorsqu'un programme d'installation utilisant l'autorisation REQUEST_INSTALL_PACKAGES tente d'installer une nouvelle application. Dans les versions précédentes d'Android, les plates-formes de téléchargement d'applications ne peuvent demander l'approbation de l'utilisateur qu'après que les APK ont été écrits dans la session d'installation et que la session a été validée.

À partir d'Android 14, la méthode requestUserPreapproval() permet aux installateurs de demander l'approbation de l'utilisateur avant de lancer la session d'installation. Cette amélioration permet à une plate-forme de téléchargement d'applications de différer le téléchargement des APK jusqu'à ce que l'installation ait été autorisée par l'utilisateur. En outre, une fois qu'un utilisateur a autorisé l'installation de l'application, la plate-forme de téléchargement d'applications peut la télécharger et l'installer en arrière-plan sans interrompre l'utilisateur.

Revendiquer la responsabilité des prochaines mises à jour

La méthode setRequestUpdateOwnership() permet à un programme d'installation d'indiquer au système qu'il sera responsable des futures mises à jour d'une application qu'il installe. Cette fonctionnalité permet d'appliquer la propriété des mises à jour, ce qui signifie que seul le propriétaire de la mise à jour est autorisé à installer des mises à jour automatiques de l'application. L'application forcée de la propriété des mises à jour permet de s'assurer que les utilisateurs ne reçoivent les mises à jour que depuis la plate-forme de téléchargement d'applications attendue.

Tout autre programme d'installation, y compris ceux utilisant l'autorisation INSTALL_PACKAGES, doit recevoir l'approbation explicite de l'utilisateur pour installer une mise à jour. Si un utilisateur décide de procéder à une mise à jour à partir d'une autre source, la propriété de la mise à jour est perdue.

Mettre à jour les applications au meilleur moment

Les plates-formes de téléchargement d'applications évitent généralement de mettre à jour une application en cours d'utilisation, car cela entraîne la fermeture des processus en cours d'exécution, ce qui peut potentiellement interrompre l'activité de l'utilisateur.

À partir d'Android 14, l'API InstallConstraints permet aux programmes d'installation de s'assurer que les mises à jour de leurs applications sont effectuées au moment opportun. Par exemple, une plate-forme de téléchargement d'applications peut appeler la méthode commitSessionAfterInstallConstraintsAreMet() pour s'assurer qu'une mise à jour n'est validée que lorsque l'utilisateur n'interagit plus avec l'application en question.

Installer facilement des divisions facultatives

Avec les APK divisés, les fonctionnalités d'une application peuvent être distribuées dans des fichiers APK distincts plutôt que sous forme d'un APK monolithique. Les APK divisés permettent aux plates-formes de téléchargement d'applications d'optimiser la distribution des différents composants de l'application. Par exemple, les plates-formes de téléchargement d'applications peuvent être optimisées en fonction des propriétés de l'appareil cible. L'API PackageInstaller accepte les divisions depuis son lancement au niveau d'API 22.

Dans Android 14, la méthode setDontKillApp() permet à un programme d'installation d'indiquer que les processus en cours d'exécution de l'application ne doivent pas être supprimés lorsque de nouvelles divisions sont installées. Les plates-formes de téléchargement d'applications peuvent utiliser cette fonctionnalité pour installer facilement de nouvelles fonctionnalités d'une application lorsque l'utilisateur l'utilise.

Groupes de métadonnées d'application

À partir d'Android 14, le programme d'installation du package Android vous permet de spécifier des métadonnées d'application, telles que des pratiques en matière de sécurité des données, à inclure sur les pages de la plate-forme de téléchargement d'applications telles que Google Play.

Détecter quand les utilisateurs prennent des captures d'écran de l'appareil

Pour créer une expérience plus standardisée, Android 14 introduit une API de détection des captures d'écran protégeant la confidentialité. Cette API permet aux applications d'enregistrer des rappels par activité. Ces rappels sont appelés, et l'utilisateur en est informé lorsqu'une capture d'écran est prise et que cette activité est visible.

Expérience utilisateur

Actions personnalisées Sharesheet et classement amélioré

Android 14 updates the system sharesheet to support custom app actions and more informative preview results for users.

Add custom actions

With Android 14, your app can add custom actions to the system sharesheet it invokes.

Screenshot of custom actions on the sharesheet.

Improve ranking of Direct Share targets

Android 14 uses more signals from apps to determine the ranking of the direct share targets to provide more helpful results for the user. To provide the most useful signal for ranking, follow the guidance for improving rankings of your Direct Share targets. Communication apps can also report shortcut usage for outgoing and incoming messages.

Direct Share row in the sharesheet, as shown by 1

Prise en charge des animations intégrées et personnalisées pour la prévisualisation du Retour

Video: Predictive back animations

Android 13 introduced the predictive back-to-home animation behind a developer option. When used in a supported app with the developer option enabled, swiping back shows an animation indicating that the back gesture exits the app back to the home screen.

Android 14 includes multiple improvements and new guidance for Predictive Back:

With this Android 14 preview release, all features of Predictive Back remain behind a developer option. See the developer guide to migrate your app to predictive back, as well as the developer guide to creating custom in-app transitions.

Forçages par application du fabricant des appareils à grand écran

Les forçages par application permettent aux fabricants d'appareils de modifier le comportement des applications sur les appareils à grand écran. Par exemple, le forçage FORCE_RESIZE_APP indique au système de redimensionner l'application pour qu'elle s'adapte aux dimensions d'affichage (en évitant le mode de compatibilité de taille), même si resizeableActivity="false" est défini dans le fichier manifeste de l'application.

Les remplacements sont destinés à améliorer l'expérience utilisateur sur les grands écrans.

Les nouvelles propriétés de fichier manifeste vous permettent de désactiver certains forçages du fabricant de l'appareil pour votre application.

Forçages par application pour les utilisateurs sur grand écran

Les forçages par application modifient le comportement des applications sur les appareils à grand écran. Par exemple, le forçage du fabricant de l'appareil OVERRIDE_MIN_ASPECT_RATIO_LARGE définit le format de l'application sur 16:9, quelle que soit sa configuration.

Android 14 QPR1 permet aux utilisateurs d'appliquer des forçages par application à l'aide d'un nouveau menu de paramètres sur les appareils à grand écran.

Partager le contenu d'une appli sur l'écran

Le partage d'écran de l'application permet aux utilisateurs de partager une fenêtre de l'application au lieu de l'intégralité de l'écran de l'appareil pendant l'enregistrement du contenu.

Avec le partage d'écran de l'application, la barre d'état, la barre de navigation, les notifications et les autres éléments d'UI du système sont exclus de l'écran partagé. Seul le contenu de l'application sélectionnée est partagé.

Le partage d'écran d'application améliore la productivité et la confidentialité en permettant aux utilisateurs d'exécuter plusieurs applications, mais en limitant le partage de contenu à une seule application.

Réponse suggérée basée sur un LLM dans Gboard sur le Pixel 8 Pro

On Pixel 8 Pro devices with the December Feature Drop, developers can try out higher-quality smart replies in Gboard powered by on-device Large Language Models (LLMs) running on Google Tensor.

This feature is available as a limited preview for US English in WhatsApp, Line, and KakaoTalk. It requires using a Pixel 8 Pro device with Gboard as your keyboard.

To try it out, first enable the feature in Settings > Developer Options > AiCore Settings > Enable Aicore Persistent.

Next, open a conversation in a supported app to see LLM-powered Smart Reply in Gboard's suggestion strip in response to incoming messages.

Gboard utilizes on-device LLMs to provide higher-quality smart replies.

Graphismes

Les chemins sont interrogeables et interpolables

L'API Path d'Android est un mécanisme puissant et flexible permettant créer et afficher des graphiques vectoriels, avec la possibilité de tracer ou de remplir créer un tracé à partir de segments de droite ou de courbes quadratiques ou cubiques, des opérations booléennes pour obtenir des formes encore plus complexes, simultanément. L'une des limites est la capacité à déterminer ce qui se trouve réellement dans un Objet chemin les composants internes de l'objet sont opaques pour les appelants après sa création.

Pour créer un Path, vous appelez des méthodes telles que moveTo(), lineTo() et cubicTo() pour ajouter des segments de chemin. Mais il n'y avait aucun moyen de demandez à ce chemin quels sont les segments. Vous devez donc conserver ces informations au moment de leur création.

À partir d'Android 14, vous pouvez interroger des chemins pour connaître leur contenu. Tout d'abord, vous devez obtenir un objet PathIterator à l'aide de la API Path.getPathIterator:

Kotlin

val path = Path().apply {
    moveTo(1.0f, 1.0f)
    lineTo(2.0f, 2.0f)
    close()
}
val pathIterator = path.pathIterator

Java

Path path = new Path();
path.moveTo(1.0F, 1.0F);
path.lineTo(2.0F, 2.0F);
path.close();
PathIterator pathIterator = path.getPathIterator();

Vous pouvez ensuite appeler PathIterator pour itérer les segments. une par une, en récupérant toutes les données nécessaires pour chaque segment. Cet exemple utilise des objets PathIterator.Segment, qui empaquettent les données ; pour vous:

Kotlin

for (segment in pathIterator) {
    println("segment: ${segment.verb}, ${segment.points}")
}

Java

while (pathIterator.hasNext()) {
    PathIterator.Segment segment = pathIterator.next();
    Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints());
}

PathIterator dispose également d'une version non allouée de next() que vous pouvez transmettre dans un tampon pour stocker les données de point.

L'interpolation est l'un des principaux cas d'utilisation des demandes de données formulées à Path. Pour Par exemple, vous pouvez animer (ou transformer) entre deux chemins différents. À pour simplifier encore ce cas d'utilisation, Android 14 inclut également interpolate() sur Path. En supposant que les deux chemins aient la même structure interne, la méthode interpolate() crée un nouveau Path. avec ce résultat interpolé. Cet exemple renvoie un tracé dont la forme est Mi-chemin (interpolation linéaire de 0,5) entre path et otherPath:

Kotlin

val interpolatedResult = Path()
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, .5f, interpolatedResult)
}

Java

Path interpolatedResult = new Path();
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, 0.5F, interpolatedResult);
}

La bibliothèque Jetpack graphics-path permet d'utiliser des API similaires pour versions antérieures d'Android.

Maillages personnalisés avec des nuanceurs de sommets et de fragments

Android accepte depuis longtemps le dessin de maillages triangulaires avec ombrage personnalisé, mais le format du maillage d'entrée est limité à quelques combinaisons d'attributs prédéfinis. Android 14 est compatible avec les réseaux maillés personnalisés, qui peuvent être définis comme des triangles ou des bandes triangulaires et qui peuvent éventuellement être indexés. Ces maillages sont spécifiés avec des attributs personnalisés, des pas de sommet, des nuances variables, et des nuanceurs de sommets et de fragments écrits en AGSL.

Le nuanceur de sommets définit les variations, telles que la position et la couleur, tandis que le nuanceur de fragments peut éventuellement définir la couleur du pixel, généralement à l'aide des variables créées par le nuanceur de sommets. Si la couleur est fournie par le nuanceur de fragments, elle est ensuite fusionnée avec la couleur Paint actuelle à l'aide du mode de combinaison sélectionné lors du dessin du maillage. Les uniformes peuvent être transmises aux nuanceurs de fragments et de sommets pour plus de flexibilité.

Moteur de rendu de tampon matériel pour Canvas

Pour faciliter l'utilisation de l'API Canvas d'Android pour dessiner avec une accélération matérielle dans un HardwareBuffer, Android 14 introduit HardwareBufferRenderer. Cette API est particulièrement utile lorsque votre cas d'utilisation implique une communication avec le système compositeur via SurfaceControl pour une faible latence un dessin.