Une introduction à la structure du vérificateur d’orthographe d’Android

introduction

Si vous créez un IME (Input Method Editor) personnalisé ou une application de traitement de la langue, vous pouvez utiliser le cadre de vérification orthographique d’Android pour ajouter rapidement une fonctionnalité de vérification orthographique à votre application sans avoir à gérer des tâches de bas niveau, telles que la maintenance de listes de mots ou déterminer Distances Damerau-Levenshtein entre les mots.

Le framework peut également être utilisé pour créer un correcteur orthographique personnalisé (par exemple pour une nouvelle langue ou pour un domaine spécifique) que d’autres applications peuvent utiliser.

Ce didacticiel vous montre d’abord comment utiliser le framework pour interagir avec le vérificateur d’orthographe par défaut d’Android, puis passe à couvrir les bases du développement d’un correcteur orthographique personnalisé.

1. Interagir avec un correcteur orthographique

Étape 1: Créez un Activity

Avant de plonger dans le cadre, créons d’abord un Activity qui peut afficher les résultats des vérifications orthographiques.

Créez une nouvelle classe Java appelée OrthographeClient qui s’étend Activity. Cette classe doit également implémenter le SpellCheckerSession.SpellCheckerSessionListener interface pour interagir avec les services de correcteur orthographique d’Android. Dans Android Studio, vous pouvez appuyer sur Alt + Insérer pour générer automatiquement des stubs vides pour les méthodes de l’interface.

Comme ça Activity va n’en avoir qu’un TextView dans sa mise en page, vous n’avez pas besoin de créer une mise en page XML pour elle. Remplacer le onCreate méthode pour initialiser le TextView et passez-le au setContentView méthode pour qu’il occupe tout l’écran.

À ce stade, votre classe devrait ressembler à ceci:

Étape 2: envoyer les données au correcteur orthographique par défaut

Passons maintenant une phrase contenant plusieurs mots mal orthographiés au correcteur orthographique par défaut d’Android. Créez une méthode nommée fetchSuggestionsPour qui accepte un String comme paramètre.

Parce que le correcteur orthographique Service fait partie de la Services de texte API, vous devez utiliser le getSystemService méthode pour récupérer une instance de TextServicesManager. Vous pouvez alors appeler le newSpellCheckerSession méthode pour créer un nouveau session, qui peut être utilisé pour envoyer des données au correcteur orthographique. Ajoutez le code suivant à la méthode:

Assurez-vous que le Locale vous passez à newSpellCheckerSession correspond à la langue de votre phrase d’entrée.

Maintenant que le session est prêt, vous pouvez appeler getSentenceSuggestions pour obtenir des suggestions d’orthographe pour une ou plusieurs phrases.

le getSentenceSuggestions La méthode prend deux paramètres. Le premier paramètre est un tableau de TextInfo objets. Vous utilisez le constructeur du TextInfo classe pour convertir un String dans une TextInfo objet. Le deuxième paramètre est un int qui spécifie le nombre de suggestions à générer. Pour cet exemple, définissons-le sur 5.

Ajoutez le code suivant à la méthode:

Enfin, appelez fetchSuggestionsFor dans le onCreate méthode de la Activity.

Notez que le getSentenceSuggestions La méthode a été introduite au niveau API 16. Les versions précédentes de l’API utilisaient le, désormais obsolète, getSuggestions méthode.

Étape 3: afficher les suggestions

le getSentenceSuggestions interagit avec le correcteur orthographique de manière asynchrone. Lorsque les suggestions ont été générées, le onGetSentenceSuggestions méthode est appelée.

Les suggestions pour chaque phrase d’entrée sont disponibles dans un SentenceSuggestionsInfo objet. Chaque SentenceSuggestionsInfo l’objet contient plusieurs SuggestionsInfo objets, généralement pour chaque mot de la phrase. Chaque SuggestionsInfo objet contient les suggestions réelles d’un mot sous la forme de String objets.

En relation :  Comment exécuter une requête dans Microsoft Access

Pour cet exemple, parcourons simplement toutes les suggestions et ajoutons-les à un StringBuffer. Utilisation getSuggestionsCount pour déterminer le nombre de suggestions disponibles et getSuggestionInfoAt pour obtenir une référence à un particulier SuggestionInfo.

Ajoutez le code suivant au onGetSentenceSuggestions méthode:

Vous pouvez maintenant utiliser le TextViewde setText méthode pour rendre le contenu du StringBuffer. Cependant, vous ne pouvez pas appeler la méthode directement, car onGetSentenceSuggestions fonctionne sur son propre thread. Toute tentative de modification de l’interface utilisateur à partir d’un thread non-UI entraînera une exception d’exécution. Par conséquent, assurez-vous d’appeler le setText méthode de l’intérieur du runOnUiThread méthode.

Si vous exécutez votre application maintenant, la sortie ressemblera à ceci:

Comme vous pouvez le voir, notre application affiche actuellement des suggestions pour tous les mots de la phrase, même pour ceux dont l’orthographe est correcte.

Pour n’afficher que les suggestions de mots mal orthographiés, nous devrons regarder les drapeaux associés à chacun SuggestionsInfo objet. UNE SuggestionsInfo l’objet d’un mot mal orthographié a le RESULT_ATTR_LOOKS_LIKE_TYPO ensemble de drapeau. Par conséquent, nous devons ajouter du code pour ignorer SuggestionsInfo objets où cet indicateur n’est pas défini.

Ajoutez le code suivant au onGetSentenceSuggestions méthode avant le début de la boucle la plus interne:

Exécutez à nouveau l’application pour voir la sortie modifiée.

2. Création d’un correcteur orthographique personnalisé

Maintenant que vous savez comment interagir avec le correcteur orthographique par défaut, passons à la création d’un correcteur orthographique personnalisé.

Étape 1: Créez un Service

Créez une nouvelle classe Java nommée Service d’orthographe. Pour qu’une classe soit traitée comme un correcteur orthographique par le système Android, elle doit étendre le SpellCheckerService classe et remplacer le createSession méthode.

Ajoutez le code suivant à SpellingService.java:

Étape 2: créer une session

Toute la logique de vérification orthographique personnalisée réside dans le Session. Créez une nouvelle classe nommée MySpellingSession qui s’étend Session. Vous pouvez le créer en tant que sous-classe de SpellingService.

le Session class est une classe abstraite. Après avoir remplacé toutes les méthodes abstraites, votre classe devrait ressembler à ceci:

Pour ce didacticiel, créons un correcteur orthographique très simple qui présente les fonctionnalités suivantes:

  • Il traite le mot «Peter» comme une faute de frappe.
  • Il renvoie cinq orthographes alternatives pour le mot «Peter».

Le code pour implémenter ces fonctionnalités peut être ajouté au onGetSuggestions méthode, car elle est censée gérer des mots individuels (sous la forme d’un TextInfo objets).

Extrayez le mot en utilisant le getText méthode et vérifiez si elle est égale à “Peter”. Si tel est le cas, ajoutez les suggestions appropriées à un tableau de String objets. Si ce n’est pas le cas, laissez le tableau vide.

Enfin, créez et renvoyez un nouveau SuggestionsInfo objet qui contient le tableau de suggestions avec l’indicateur RESULT_ATTR_LOOKS_LIKE_TYPO. Le code réel pourrait ressembler à ceci:

Nous n’avons pas encore fini. le SpellingsClient La classe que nous avons créée plus tôt passait des phrases entières au correcteur orthographique, pas des mots individuels. Cela signifie que le onGetSuggestions La méthode ne sera jamais appelée directement. Par conséquent, nous devons écrire un code capable de diviser les phrases en mots et de les transmettre comme arguments au onGetSuggestions méthode. Ce code doit être ajouté au onGetSentenceSuggestionsMultiple méthode.

En relation :  Myspace a supprimé 12 ans de musique dans une migration de serveur bâclée

Voici ce que vous faites dans le onGetSentenceSuggestionsMultiple méthode:

  • Parcourez le tableau de TextInfo objets qu’il reçoit en entrée et convertit chaque phrase en un tableau de mots en utilisant le split méthode.
  • Convertissez chaque mot en un TextInfo objet et passez-le comme argument au onGetSuggestions méthode.
  • Ajoutez les suggestions renvoyées à un ArrayList de SuggestionsInfo objets.
  • Créer et renvoyer un nouveau tableau de SentenceSuggestionsInfo objets utilisant le ArrayList de SuggestionsInfo objets.

Ajoutez le code suivant au onGetSentenceSuggestionsMultiple méthode:

Maintenant que la coutume Session classe est prête, créez et renvoyez une instance de celle-ci dans le service createSession méthode:

Étape 3: créer les métadonnées pour le service

Créez un nouveau fichier XML appelé spellinginfo.xml dans le res / xml dossier. Ce fichier est utilisé par le système Android pour déterminer le nom du correcteur orthographique et les langues qu’il prend en charge. Appelons notre correcteur orthographique Mon correcteur orthographique. Ajoutez le code suivant au fichier:

Mettez à jour votre values ​​/ strings.xml pour qu’il ait service_label:

Étape 4: mettre à jour le manifeste

Tout Service qui veut se comporter comme un correcteur orthographique doit demander le android.permission.BIND_TEXT_SERVICE permission et répondre à la android.service.textservice.SpellCheckerService action. Il doit également contenir une référence au XML de métadonnées que nous avons défini à l’étape précédente. Définir SpellingService en ajoutant le code suivant à votre AndroidManifest.xml:

Étape 5: Activez le nouveau correcteur orthographique

Si vous compilez et exécutez votre application maintenant, vous ne verrez aucune différence dans la sortie de votre Activity. En effet, il utilise toujours le correcteur orthographique par défaut d’Android. Pour activer votre correcteur orthographique personnalisé, accédez à la Réglages et choisissez votre correcteur orthographique dans le Langue et entrée section.

Une fois activée, si vous redémarrez l’application, vous ne verrez que des suggestions pour le mot «Peter».

Conclusion

Dans ce didacticiel, vous avez appris à communiquer avec les services de vérification orthographique d’Android pour effectuer des opérations de vérification orthographique dans votre application. Vous avez également appris à créer votre propre correcteur orthographique personnalisé. Vous pouvez utiliser ces connaissances pour créer non seulement de meilleurs IME, mais également des vérificateurs orthographiques à part entière pour les langues qui ne sont actuellement pas prises en charge par Android par défaut. Pour en savoir plus sur l’API TextServices et le framework du vérificateur d’orthographe, reportez-vous au Référence des développeurs Android.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.