Intégrer la saisie automatique aux IME et les services de saisie automatique

À partir d'Android 11, les claviers et autres éditeurs de mode de saisie (IME) peuvent afficher des suggestions de saisie automatique de manière intégrée, dans une barre de suggestions ou dans un environnement similaire, au lieu d'être affichées par le système dans un menu. Étant donné que ces suggestions de saisie automatique peuvent contenir des données privées, telles que des mots de passe ou des informations de carte de paiement, elles sont masquées dans l'IME jusqu'à ce que l'utilisateur en sélectionne une. Mettez à jour les IME et les services de saisie automatique, tels que les gestionnaires de mots de passe, pour exploiter cette fonctionnalité. Si un IME ou un service de saisie automatique n'est pas compatible avec la saisie automatique intégrée, les suggestions sont affichées dans un menu, comme dans les versions antérieures à Android 11.

Workflow

Dans les étapes ci-dessous, le terme IME désigne le clavier actuel ou un autre éditeur de saisie, et l'expression fournisseur de suggestions désigne le fournisseur approprié de cette suggestion de saisie automatique. En fonction du champ de saisie et des paramètres de l'utilisateur, le fournisseur de suggestions peut être la plate-forme ou un service de saisie automatique.

  1. L'utilisateur sélectionne un champ de saisie qui déclenche la saisie automatique, comme le champ de saisie d'un mot de passe ou d'un numéro de carte de paiement.

  2. La plate-forme interroge l'IME actuel et le fournisseur de suggestions approprié pour vérifier s'ils acceptent la saisie automatique. Si l'IME ou le fournisseur de suggestions n'est pas compatible avec la saisie automatique intégrée, la suggestion s'affiche dans un menu, comme sur Android 10 ou version antérieure.

  3. La plate-forme demande à l'IME de fournir une demande de suggestion. Cette demande spécifie le nombre maximal de suggestions à afficher et fournit également des spécifications de présentation pour chacune d'elles. Les spécifications de présentation indiquent des éléments tels que la taille maximale, la taille du texte, les couleurs et les données spécifiques à la police, ce qui permet au fournisseur de suggestions de s'adapter à l'IME.

  4. La plate-forme demande au fournisseur de suggestions de fournir le nombre de suggestions demandé. Chaque suggestion inclut un rappel visant à gonfler un élément View contenant l'interface utilisateur de la suggestion.

  5. La plate-forme informe l'IME que les suggestions sont prêtes. L'IME affiche les suggestions en appelant la méthode de rappel pour gonfler l'élément View de chaque suggestion. Afin de protéger les informations privées de l'utilisateur, l'IME ne voit pas les suggestions à ce stade.

  6. Si l'utilisateur sélectionne l'une des suggestions, l'IME est informé de la même manière que s'il choisissait une suggestion dans un menu système.

Les sections suivantes décrivent comment configurer l'IME ou le service de saisie automatique pour permettre la saisie automatique intégrée.

Configurer des IME pour permettre la saisie automatique intégrée

Cette section explique comment configurer votre IME pour permettre la saisie automatique intégrée. Si votre IME n'est pas compatible avec la saisie automatique intégrée, la plate-forme affiche par défaut des suggestions de saisie automatique dans un menu.

L'IME doit définir l'attribut supportsInlinedSuggestions sur true :

<input-method
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Lorsque la plate-forme a besoin d'une suggestion de saisie automatique, elle appelle la méthode InputMethodService.onCreateInlineSuggestionsRequest() de l'IME. Vous devez implémenter cette méthode. Renvoyez un objet InlineSuggestionsRequest spécifiant les éléments suivants :

  • Nombre de suggestions souhaitées par l'IME.
  • Un élément InlinePresentationSpec pour chaque suggestion, définissant la manière dont elle doit être présentée.

Lorsque la plate-forme propose des suggestions, elle appelle la méthode onInlineSuggestionsResponse() de l'IME, en transmettant un élément InlineSuggestionsResponse contenant les suggestions. Vous devez implémenter cette méthode. Dans votre implémentation, appelezInlineSuggestionsResponse.getInlineSuggestions() pour obtenir la liste des suggestions, puis gonflez chaque suggestion en appelant sa méthode InlineSuggestion.inflate().

Configurer les services de saisie automatique pour permettre la saisie automatique intégrée

Cette section explique comment configurer votre service de saisie automatique pour permettre la saisie automatique intégrée. Si votre application n'est pas compatible avec la saisie automatique intégrée, la plate-forme affiche par défaut ses suggestions de saisie automatique dans un menu.

Votre service de saisie automatique doit définir l'attribut supportsInlinedSuggestions sur true :

<autofill-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

Lorsque l'IME a besoin de suggestions de saisie automatique, la plate-forme appelle la méthode onFillRequest() de votre service de saisie automatique, comme dans les versions antérieures à Android 11. Cependant, votre service doit appeler la méthode getInlineSuggestionsRequest() de l'objet FillRequest transmis pour obtenir l'élément InlineSuggestionsRequest créé par l'IME. InlineSuggestionsRequest spécifie le nombre de suggestions intégrées nécessaires et la façon dont chacune doit être présentée. Si l'IME n'est pas compatible avec les suggestions intégrées, la méthode renvoie null.

Votre service de saisie automatique crée des objets InlinePresentation, dans la limite du nombre maximal demandé dans InlineSuggestionsRequest. Vos présentations doivent respecter les contraintes de taille spécifiées par InlineSuggestionsRequest. Pour renvoyer vos suggestions à l'IME, appelez Dataset.Builder.setValue() une fois pour chaque suggestion. Android 11 fournit des versions de Dataset.Builder.setValue() pour permettre les suggestions intégrées.