Android Captcha : Réutiliser un composant Google
Par Adrien le vendredi 15 mai 2009, 12:09 - Tutorial - Lien permanent
L'interface de base d'Android possède de nombreux gadgets qui s'avèrent très intéressants. Cependant, tous ne sont pas visibles publiquement dans la librairie, mais Android étant un projet open source, et les sources étant accessibles, il est donc tout à fait possible d'aller les récupérer pour les adapter.

C'est le cas du « sliding captcha » utilisé pour verrouiller l'écran de votre téléphone. Ce gadget repose sur les classes LockPatternView et LinearLayoutWithDefaultTouchRecipient disponibles sur le repository google ici : Lien vers le repository (ou en fichier joint avec le projet captcha dans leur version déjà adaptée).
Le code-source de google est comme toujours
assez clair. Ici, il nous est proposé une interface OnPatternListener que nous
pouvons implémenter pour fabriquer notre propre PatternListener et gérer nous
même nos patterns.
De base, le composant est programmé de façon à essayer d'aller interagir avec
le captcha de sécurité stocké dans votre téléphone. Il faut donc se débarrasser
de cette partie, et la remplacer par notre propre Listener.
C'est ce qui est fait avec MyPatternListener et quelques modifications dans le LockPatternView (voir code source joint avec cet article). Le code n'est pas très compliqué et très simple à mettre en œuvre.
On voit également que l'aspect graphique dépend de bitmaps qui sont chargés, et qu'on peut donc les modifier pour s'approprier le captcha. C'est ce qui a été fait ici, avec une version hexagonale des zones d'appui, pour faire un composant qui puisse s'accorder dans une application avec les HiveLayouts déjà vus précédemment par exemple.
On pourrait envisager des extensions pour offrir plus de possibilités différentes de patterns, ou même qui sait, un jour, le support du multitouch, mais ce sera l'objet d'un éventuel billet ultérieur.