Skip to main content

Command Palette

Search for a command to run...

Gestion de l'Accessibilité en Android Natif : Guide Technique 2026

Updated
23 min read
Gestion de l'Accessibilité en Android Natif : Guide Technique 2026

Contexte légal et réglementaire

Pourquoi l'accessibilité est devenue incontournable en 2026 ?

L'accessibilité n'est plus une option facultative mais une triple nécessité :

  • Obligation légale : L'European Accessibility Act (EAA) impose des normes strictes

  • Marché significatif : Selon la Banque Mondiale, 15% de la population mondiale vit avec un handicap

  • Amélioration pour tous : Les fonctionnalités d'accessibilité profitent à l'ensemble des utilisateurs

L'European Accessibility Act (EAA)

Depuis le 28 juin 2025, l'European Accessibility Act (EAA) est entré en vigueur dans l'Union Européenne, transformant fondamentalement les obligations en matière d'accessibilité numérique. Cette directive impose des exigences strictes aux applications distribuées dans l’UE et complète les législations nationales existantes.

En France, il complète le RGAA (Référentiel Général d'Amélioration de l'Accessibilité) qui continue de s'appliquer. Les deux référentiels sont complémentaires et doivent être respectés.

Qui est concerné ?

L'EAA s'applique à toute application disponible sur un store européen, quelle que soit la localisation du siège social de l'entreprise. Les catégories suivantes sont particulièrement visées :

  • Services bancaires et financiers : applications de banque mobile, services de paiement, gestion de comptes

  • E-commerce : toute application permettant l'achat de biens ou services (physiques ou numériques)

  • Transport : applications de réservation et d'information pour le transport aérien, ferroviaire, maritime et routier

  • Télécommunications : applications de communication vocale et vidéo

  • Services publics : fournisseurs d'électricité, gaz, eau

  • Services de santé : applications de prise de rendez-vous, dossiers médicaux

Calendrier de mise en conformité

  • 28 juin 2025 : Entrée en vigueur obligatoire pour les nouveaux produits et services

  • 2026 : Début des contrôles

  • 28 juin 2028 : Date limite pour la mise en conformité des services existants

Standards techniques de référence

L'EAA s'appuie sur la norme européenne EN 301 549, qui intègre les Web Content Accessibility Guidelines (WCAG) 2.1 niveau AA.

Pour la France : Le RGAA (Référentiel Général d'Amélioration de l'Accessibilité) reste la référence technique à appliquer. Le RGAA est aligné sur les WCAG et adapté au contexte français.

Les applications mobiles Android doivent respecter les quatre principes fondamentaux du WCAG (Web Content Accessibility Guidelines) :

  1. Perceptible : L'information doit être présentable de manière que tous les utilisateurs puissent la percevoir

  2. Utilisable : Les composants d'interface doivent être utilisables par tous

  3. Compréhensible : L'information et le fonctionnement de l'interface doivent être compréhensibles

  4. Robuste : Le contenu doit être compatible avec les technologies d'assistance actuelles et futures

Sanctions et responsabilités

Chaque État membre de l'UE désigne des autorités de surveillance du marché responsables du contrôle de la conformité. Les sanctions varient selon les pays mais peuvent inclure :

  • Amendes significatives

  • Retrait temporaire ou permanent de l'application des stores

  • Obligation de résolution sous délai contraint

  • Atteinte à la réputation de la marque

Sanctions spécifiques en France :

Selon les informations officielles du gouvernement français, les entreprises non conformes risquent :

  • Des amendes pouvant aller de 7 500 euros pour les contraventions de 5ème classe

  • Une astreinte de 3 000 euros par jour pour non-mise en conformité

  • Le montant total de l'astreinte ne peut dépasser 300 000 euros

Ces sanctions sont appliquées par la Direction générale de la concurrence, de la consommation et de la répression des fraudes (DGCCRF) qui assure la surveillance du marché en France. Les montants exacts dépendent de la gravité du manquement et du cadre juridique applicable.

Source : Mon parcours handicap

Services d'accessibilité Android

L'écosystème des services d'accessibilité

Android propose un écosystème complet de services d'accessibilité que les développeurs doivent prendre en compte :

  • TalkBack : Lecteur d'écran intégré qui fournit des retours vocaux

  • Switch Access : Permet l'interaction via des commutateurs physiques pour les utilisateurs avec mobilité réduite

  • Voice Access : Contrôle vocal de l'appareil

  • Select to Speak : Lecture sélective d'éléments à l'écran

  • Magnification : Agrandissement de l'écran

  • Live Captions : Sous-titres en temps réel pour le contenu multimédia

  • Sound Amplifier : Amplification et filtrage du son

Les API Accessibility

Implémentation avec Jetpack Compose

Jetpack Compose, le framework UI d'Android, intègre l'accessibilité au cœur de son architecture déclarative.

Principes fondamentaux des Semantics

Le système de sémantique de Compose permet de décrire le sens et le rôle des éléments UI pour les services d'accessibilité.

Descriptions de contenu

// ✅ Correct : Description claire pour les images
Image(
    painter = painterResource(id = R.drawable.user_avatar),
    contentDescription = "Photo de profil de l'utilisateur",
    modifier = Modifier.size(48.dp)
)

// ❌ Incorrect : Absence de description
Image(
    painter = painterResource(id = R.drawable.user_avatar),
    contentDescription = null, // TalkBack ne pourra pas décrire l'image
    modifier = Modifier.size(48.dp)
)

// ✅ Correct : Image purement décorative
Image(
    painter = painterResource(id = R.drawable.decorative_pattern),
    contentDescription = null, // Acceptable pour élément décoratif
    modifier = Modifier.semantics { 
        invisibleToUser() // Indique explicitement que l'élément est décoratif
    }
)

Bonnes pratiques pour les contentDescription :

  • Ne jamais inclure le type d'élément UI (TalkBack l'annonce automatiquement)

    • ✅ Correct : "Soumettre"

    • ❌ Incorrect : "Bouton Soumettre"

  • Chaque description doit être unique dans un conteneur

    • Dans une RecyclerView, chaque élément doit avoir une description différente reflétant son contenu propre

    • Exemple : "Paris", "Lyon", "Marseille" plutôt que trois fois "Ville"

  • Décrire le contenu utile, pas l'apparence visuelle

    • ✅ "Photo de profil de l'utilisateur"

    • ❌ "Image ronde avec bordure bleue"

  • Pour les TextView : Android annonce automatiquement le texte (pas besoin de contentDescription)

  • Pour les éléments purement décoratifs (API 16+) :

    • Utiliser android:importantForAccessibility="no" en XML

    • Ou Modifier.semantics { invisibleToUser() } en Compose

Rôles sémantiques

// Définition explicite du rôle pour un composant custom
Box(
    modifier = Modifier
        .clickable { /* Action */ }
        .semantics { 
            role = Role.Button
            contentDescription = "Télécharger le fichier"
        }
        .padding(16.dp)
) {
    Icon(Icons.Default.CloudUpload, contentDescription = null)
    Text("Télécharger")
}

Les rôles disponibles incluent : Button, Checkbox, Switch, RadioButton, Tab, Image, DropdownList.

Fusion des Semantics

Pour les composants composites, il est souvent nécessaire de fusionner les sémantiques :

// ✅ Fusion correcte pour un élément avatar avec nom
Row(
    modifier = Modifier
        .clickable { /* Ouvrir profil */ }
        .semantics(mergeDescendants = true) {} // Fusionne tous les enfants
) {
    Image(
        painter = painterResource(R.drawable.avatar),
        contentDescription = "Avatar",
        modifier = Modifier.size(48.dp)
    )
    Text("Jean Dupont")
}
// TalkBack annonce : "Jean Dupont, Avatar, Bouton, double-tap pour activer"

// ❌ Sans fusion
Row(
    modifier = Modifier.clickable { /* Ouvrir profil */ }
) {
    Image(
        painter = painterResource(R.drawable.avatar),
        contentDescription = "Avatar",
        modifier = Modifier.size(48.dp)
    )
    Text("Jean Dupont")
}
// TalkBack annonce séparément : "Avatar" puis "Jean Dupont" puis "Bouton"

Labels d'action personnalisés

Améliorer la clarté des actions avec des labels explicites :

Button(
    onClick = { /* Action */ },
    modifier = Modifier.semantics {
        onClick(label = "Ouvrir l'article complet") { 
            true 
        }
    }
) {
    Text("Lire plus")
}
// TalkBack annonce : "Lire plus, Bouton, double-tap pour ouvrir l'article complet"
// Au lieu de : "Lire plus, Bouton, double-tap pour activer"

Gestion de l'ordre de traversée

Par défaut, TalkBack parcourt les éléments de haut en bas, de gauche à droite. Pour des layouts non-linéaires :

Box(
    modifier = Modifier.semantics { 
        isTraversalGroup = true // Groupe de traversée
    }
) {
    (0..11).forEach { hour ->
        Text(
            text = "$hour",
            modifier = Modifier
                .align(getClockPosition(hour))
                .semantics { 
                    traversalIndex = hour.toFloat() // Ordre logique
                }
        )
    }
}

Annonces dynamiques avec LiveRegion

Pour notifier les utilisateurs de changements de contenu :

var messageCount by remember { mutableStateOf(0) }

Text(
    text = "Vous avez $messageCount nouveaux messages",
    modifier = Modifier.semantics {
        liveRegion = LiveRegionMode.Polite
    }
)
// TalkBack annonce automatiquement les changements de messageCount

Modes disponibles :

  • LiveRegionMode.Polite : Annonce à la prochaine pause de TalkBack (recommandé)

  • LiveRegionMode.Assertive : Interrompt immédiatement TalkBack (réservé aux urgences)

Gestion du focus

Différence entre focus accessibilité et focus clavier

val focusRequester = remember { FocusRequester() }

// ❌ Ne fonctionne PAS pour TalkBack (uniquement focus clavier)
TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)
LaunchedEffect(Unit) {
    focusRequester.requestFocus() // Focus clavier uniquement
}

// ✅ Focus accessibilité correct
var focusedState by remember { mutableStateOf(false) }
TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.semantics {
        focused = focusedState
    }
)
LaunchedEffect(Unit) {
    delay(100)
    focusedState = true // TalkBack se déplacera sur cet élément
}

Exigences visuelles et de conception

Contraste des couleurs

Le ratio de contraste doit être d'au moins 4.5:1 pour les textes de moins de 18pt (ou 14pt en gras), et d'au moins 3:1 pour les textes plus grands.

// ✅ Utilisation des couleurs du Material Theme (contraste garanti)
Text(
    text = "Texte accessible",
    color = MaterialTheme.colorScheme.onBackground,
    fontSize = 16.sp
)

// ❌ Couleurs hardcodées avec contraste insuffisant
Text(
    text = "Texte difficile à lire",
    color = Color.Gray, // Risque de contraste insuffisant
    fontSize = 14.sp
)

Outils de vérification :

Taille des cibles tactiles

Chaque élément interactif doit avoir une zone tactile d'au moins 48dp × 48dp (recommandation Google). Selon la documentation officielle Android, pour qu'un élément respecte cette recommandation, les deux conditions suivantes doivent être remplies :

  1. La somme de paddingLeft + minWidth + paddingRight ≥ 48dp

  2. La somme de paddingTop + minHeight + paddingBottom ≥ 48dp

Exemple XML (View System) :

<!-- ✅ Correct : 4 + 40 + 4 = 48dp (largeur) et 8 + 32 + 8 = 48dp (hauteur) -->
<ImageButton
    android:paddingLeft="4dp"
    android:minWidth="40dp"
    android:paddingRight="4dp"
    android:paddingTop="8dp"
    android:minHeight="32dp"
    android:paddingBottom="8dp"
    android:contentDescription="@string/inspect" />

Exemple Compose :

// ✅ Taille tactile correcte avec size()
IconButton(
    onClick = { /* Action */ },
    modifier = Modifier.size(48.dp) // Zone tactile minimale garantie
) {
    Icon(
        imageVector = Icons.Default.Delete,
        contentDescription = "Supprimer",
        modifier = Modifier.size(24.dp) // Icône visuelle plus petite
    )
}

// ✅ Alternative avec padding explicite : 12 + 24 + 12 = 48dp
Box(
    modifier = Modifier
        .clickable { /* Action */ }
        .padding(12.dp)
        .size(24.dp)
) {
    Icon(Icons.Default.Delete, contentDescription = "Supprimer")
}

Note importante : Avec les marges intérieures (padding), la taille visible d'un élément peut être inférieure à 48dp × 48dp tout en respectant la zone tactile recommandée.

Mise à l'échelle du texte

Support du dimensionnement dynamique du texte (paramètre système) :

// ✅ Utilisation de l'échelle sp (scale-independent pixels)
Text(
    text = "Texte scalable",
    fontSize = 16.sp, // S'adapte aux préférences utilisateur
    lineHeight = 24.sp
)

// ❌ Taille fixe en dp (ne scale pas)
Text(
    text = "Texte non-scalable",
    fontSize = 16.dp.toSp() // Mauvaise pratique
)

// ✅ Auto-sizing text (Compose BOM 2025.05+)
Text(
    text = longText,
    modifier = Modifier
        .width(200.dp)
        .autoSizeText(
            minFontSize = 12.sp,
            maxFontSize = 20.sp
        )
)

Champs de saisie : labels et types

Labels persistants :

Chaque champ de saisie doit avoir un label qui reste visible après la prise de focus et après la saisie.

// ✅ Correct : label persistant avec TextField Compose
OutlinedTextField(
    value = email,
    onValueChange = { email = it },
    label = { Text("Adresse e-mail") }, // Label toujours visible
    modifier = Modifier.fillMaxWidth()
)

// ❌ Incorrect : placeholder qui disparaît
TextField(
    value = email,
    onValueChange = { email = it },
    placeholder = { Text("Entrez votre e-mail") } // Disparaît après saisie
    // Pas de label !
)

Types de clavier appropriés

Associer chaque champ au type de clavier correspondant pour faciliter la saisie.

// ✅ Email : clavier avec @ et .com
OutlinedTextField(
    value = email,
    onValueChange = { email = it },
    label = { Text("E-mail") },
    keyboardOptions = KeyboardOptions(
        keyboardType = KeyboardType.Email,
        imeAction = ImeAction.Next
    )
)

// ✅ Téléphone : clavier numérique
OutlinedTextField(
    value = phone,
    onValueChange = { phone = it },
    label = { Text("Téléphone") },
    keyboardOptions = KeyboardOptions(
        keyboardType = KeyboardType.Phone
    )
)

// ✅ Nombre : clavier numérique avec décimales
OutlinedTextField(
    value = amount,
    onValueChange = { amount = it },
    label = { Text("Montant") },
    keyboardOptions = KeyboardOptions(
        keyboardType = KeyboardType.Decimal
    )
)

// ✅ URL : clavier avec / et .com
OutlinedTextField(
    value = url,
    onValueChange = { url = it },
    label = { Text("Site web") },
    keyboardOptions = KeyboardOptions(
        keyboardType = KeyboardType.Uri
    )
)

Types disponibles :

  • KeyboardType.Text : Texte standard

  • KeyboardType.Email : E-mail (avec @ et domaines)

  • KeyboardType.Phone : Numéros de téléphone

  • KeyboardType.Number : Nombres entiers

  • KeyboardType.Decimal : Nombres décimaux

  • KeyboardType.Uri : URLs

  • KeyboardType.Password : Masque la saisie

Support RTL (Right-to-Left)

Pour les langues s'écrivant de droite à gauche (arabe, hébreu) :

CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
    Row(
        modifier = Modifier.fillMaxWidth(),
        horizontalArrangement = Arrangement.Start // Devient "fin" en RTL
    ) {
        Icon(Icons.Default.ArrowForward, contentDescription = null)
        Text("Suivant")
    }
}

Orientation de l’appareil

L'application ne doit pas imposer une orientation (portrait ou paysage) pour accéder au contenu. L'utilisateur doit pouvoir consulter le contenu quelle que soit l'orientation.

// ✅ Correct : support des deux orientations
@Composable
fun MyScreen() {
    // Le contenu s'adapte automatiquement à l'orientation
    Column(
        modifier = Modifier
            .fillMaxSize()
            .verticalScroll(rememberScrollState())
    ) {
        // Contenu accessible dans les deux orientations
    }
}

// ❌ Incorrect : forcer l'orientation dans le manifeste
// <activity
//     android:name=".MainActivity"
//     android:screenOrientation="portrait" /> <!-- Ne pas faire -->

À partir d'Android 16 (API level 36), certaines configurations de verrouillage d’orientation peuvent être ignorées sur les appareils grands écrans ou en mode plein écran, notamment pour améliorer l’adaptabilité et la conformité aux standards d’accessibilité. Concrètement :

  • Les attributs android:screenOrientation comme "portrait", "landscape", "sensorPortrait", ou "sensorLandscape" sont ignorés par le système

  • Cette restriction s'applique uniquement aux apps ciblant Android 16+ (targetSdkVersion 36+)

Cette évolution technique d'Android renforce la conformité EAA.

Tests d'accessibilité

Compose UI Check (Android Studio)

Compose UI Check est un mode d'audit automatique intégré à Android Studio pour les Compose Previews.

Activation :

  1. Ouvrez un fichier avec des @Preview Compose

  2. Cliquez sur le bouton "Compose UI Check mode" dans la preview

  3. Android Studio analyse automatiquement votre UI

Détections :

  • Problèmes de contraste des couleurs

  • Texte étiré sur grands écrans

  • Tailles de cibles tactiles insuffisantes

  • Simulation de déficiences visuelles (daltonisme, etc.)

Avantages :

  • ✅ Détection en temps réel pendant le développement

  • ✅ Visualisation des problèmes directement dans le panneau "Problems"

Compose UI Check

Lint warnings dans Android Studio

Android Studio affiche automatiquement des avertissements pour les problèmes d'accessibilité :

<!-- ❌ Lint affichera : [Accessibility] Missing 'contentDescription' attribute on image -->
<ImageView
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:src="@drawable/icon" />

<!-- ✅ Problème résolu -->
<ImageView
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:src="@drawable/icon"
    android:contentDescription="@string/icon_description" />

Les warnings Lint incluent des liens directs vers le code source pour faciliter la correction.

Tests manuels avec TalkBack

Procédure de test essentielle :

  1. Activer TalkBack : Paramètres > Accessibilité > TalkBack

  2. Naviguer avec des gestes :

    • Glisser vers la droite : élément suivant

    • Glisser vers la gauche : élément précédent

    • Double-tap n'importe où : activer l'élément focalisé

    • Glisser 2 doigts vers le haut/bas : scroller dans le contenu

    • Glisser en L : menu contextuel TalkBack

  3. Vérifier :

    • Tous les éléments interactifs sont annoncés

    • Les annonces sont claires et pertinentes

    • L'ordre de navigation est logique

    • Les changements d'état sont communiqués

    • Pas de "piège au clavier" : on peut toujours revenir en arrière

TalkBack

TalkBack

Accessibility Scanner

Application Google permettant de détecter les problèmes d'accessibilité :

  1. Installer depuis le Play Store

  2. Activer le service

  3. Capturer l'écran de votre app

  4. Consulter les suggestions d'amélioration

👉 Accessibility Scanner - PlayStore

Outils de debugging Android pour l'audit

Afficher la sortie vocale de TalkBack :

Pour faciliter les audits et les captures d'écran, vous pouvez afficher le texte prononcé par TalkBack sous forme de bulle à l'écran.

  1. Aller dans Paramètres > Accessibilité > TalkBack > Paramètres

  2. Dans Paramètres du développeur, activer Afficher la sortie vocale

  3. Une bulle affichera maintenant le texte prononcé lors de la navigation

Avantages :

  • Facilite la prise de captures d'écran pour les rapports d'audit

  • Permet de vérifier rapidement les annonces TalkBack sans audio

  • Utile pour documenter les problèmes d'accessibilité

Afficher les contours des éléments :

Pour mesurer précisément les tailles des zones tactiles (Android 4.2+) :

  1. Débloquer le mode développeur : Paramètres > À propos du téléphone, taper 7 fois sur Numéro de build

  2. Aller dans Paramètres > Options pour les développeurs

  3. Dans la section Tracé, activer Afficher les contours

Utilité :

  • Mesurer précisément les zones tactiles avec une règle

  • Identifier les zones sensibles qui n'ont pas de délimitation visuelle

  • Vérifier les marges entre éléments interactifs

  • Vérifier le critère de taille minimale (9mm × 9mm)

Options pour les développeurs - Affichage des contours

Pre-launch reports de la console du Play Store

La console du Play Store génère automatiquement des rapports de pré-lancement chaque fois que vous publiez un Android App Bundle. Ces rapports incluent une section dédiée à l'accessibilité.

Avantages

  • Automatique : Aucune configuration requise, le rapport est généré lors de la soumission

  • Tests sur appareils réels : Votre application est testée sur une gamme d'appareils Android physiques

  • Détection de problèmes d'accessibilité :

    • Labels de contenu manquants ou incorrects

    • Problèmes de contraste des couleurs

    • Zones tactiles trop petites

    • Éléments "EditText" mal configurés

  • Tests de compatibilité : Vérification sur différentes versions d'Android, notamment la dernière

  • Vulnérabilités de sécurité et confidentialité

  • Pré-vérifications : Détection de problèmes edge-to-edge et layouts grands écrans

Pre-launch reports de la console du Play Store

Accès : Disponible dans la console du Play Store après soumission d'une version

👉 Guide officiel des Pre-launch reports
👉 Formation Play Academy (5 minute
s)

Tests utilisateurs

Les tests avec de véritables utilisateurs en situation de handicap fournissent des insights spécifiques et précieux difficiles à obtenir avec les outils automatisés ou les tests manuels effectués par l'équipe de développement.

Comment recruter des testeurs :

  1. Organisations locales : Contactez des associations, universités ou centres de formation pour personnes handicapées de votre région

  2. Cercle social : Demandez dans votre réseau personnel et professionnel - il y a souvent des personnes volontaires pour aider

  3. Services de test utilisateurs : Des plateformes comme UserTesting.com peuvent inclure des utilisateurs en situation de handicap dans leurs panels de testeurs

Évolutions récentes de l’accessibilité

Expressive Captions

Les nouvelles légendes expressives affichent instantanément le ton, l'émotion et les indices sonores pour les vidéos.

// Configuration dans le fichier manifeste
<application>
    <meta-data
        android:name="com.google.android.accessibility.captions.expressive"
        android:value="true" />
</application>

👉 Expressive Captions

TalkBack amélioré par IA

TalkBack utilise désormais l'IA pour créer des descriptions visuelles et répondre à des questions de suivi. Pour optimiser ce système :

// Fournir des descriptions détaillées pour les images complexes
Image(
    painter = painterResource(R.drawable.complex_chart),
    contentDescription = "Graphique en barres montrant l'évolution des ventes " +
        "sur 12 mois, avec un pic en décembre à 15000 unités et un creux " +
        "en février à 8000 unités",
    modifier = Modifier.fillMaxWidth()
)

👉 TalkBack amélioré par IA

Audio routing pour appareils auditifs

Android 16 supporte le routage audio diffusé pour les aides auditives :

// Vérifier la disponibilité du routage audio
val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
if (audioManager.isBluetoothLeAudioBroadcastSupported) {
    // Configurer l'application pour le streaming vers appareils auditifs
}

Déclaration de conformité et documentation

Accessibility Statement obligatoire

L'EAA requiert une déclaration d'accessibilité publique qui doit être facilement accessible aux utilisateurs.

Où placer cette déclaration ?

Pour les applications mobiles, plusieurs options sont recommandées :

  1. Dans l'application elle-même : Section "À propos" > "Accessibilité" ou "Paramètres" > "Accessibilité"

  2. Sur votre site web : Page dédiée accessible depuis le footer (ex: example.com/accessibilite)

  3. Dans la fiche Play Store : Mentionnée dans la description longue de l'application avec lien vers la version complète

Recommandation :

Privilégiez une combinaison des trois approches pour une visibilité maximale. La déclaration complète peut être hébergée sur votre site web, avec un accès direct depuis l'application (bouton "En savoir plus sur l'accessibilité" pointant vers l'URL).

Contenu recommandé :

# Déclaration d'accessibilité

## Niveau de conformité
Cette application est conforme au niveau AA des WCAG et à la norme EN 301 549.

## Date d'évaluation
Dernière évaluation : [date]

## Méthode d'évaluation
- Tests automatisés avec Accessibility Scanner
- Audit manuel avec TalkBack
- Tests utilisateurs avec personnes en situation de handicap

## Limitations connues
[Lister les éventuelles limitations avec plan de résolution]

## Contact
Pour signaler un problème d'accessibilité : accessibility@example.com

Documentation Play Store

Dans la Console Google Play, déclarer explicitement :

  • L'utilisation de l'API AccessibilityService (si applicable)

  • Les fonctionnalités d'accessibilité implémentées

  • La conformité aux standards internationaux

Checklist de mise en conformité

Niveau 1 : Fondamentaux (conformité minimale)

  • Toutes les images ont un contentDescription approprié

  • Contraste de couleurs ≥ 4.5:1 pour texte normal, ≥ 3:1 pour texte large

  • Tailles de cibles tactiles ≥ 48dp × 48dp

  • Support du dimensionnement du texte système

  • Tests TalkBack effectués sur les flux principaux

  • Pas d'informations transmises uniquement par la couleur

  • Pre-launch reports de la Play Console consultés et problèmes résolus

  • Lint warnings d'accessibilité corrigés dans Android Studio

  • Marges suffisantes entre zones sensibles adjacentes

  • Contenu accessible quelle que soit l'orientation (portrait/paysage)

Niveau 2 : Qualité (WCAG 2.1 AA complet)

  • Ordre de traversée logique vérifié

  • Labels d'action personnalisés pour clarté

  • LiveRegions pour changements de contenu dynamiques

  • Support RTL pour internationalisation

  • Tests avec Switch Access et Voice Access

  • Vidéos avec sous-titres et transcriptions

  • Temps suffisant pour compléter les actions

  • Pas de clignotement > 3 fois/seconde

  • Champs de saisie avec labels persistants (visibles après saisie)

  • Types de clavier appropriés pour chaque champ (email, téléphone, nombre, etc.)

  • Notifications sonores accompagnées d'alternatives visuelles

  • Pas de piège au clavier (focus peut toujours avancer/reculer)

Niveau 3 : Excellence (au-delà de la conformité)

  • Tests avec utilisateurs réels en situation de handicap

  • Documentation d'accessibilité pour l'équipe

  • Intégration des tests d'accessibilité en CI/CD

  • Surveillance continue des retours utilisateurs

  • Formation de l'équipe aux bonnes pratiques

  • Raccourcis clavier pour fonctions principales

  • Mode de contraste élevé dédié

Accessibilité : au-delà de la conformité

Bénéfices mesurables

  1. Élargissement du marché : Environ 101 millions de personnes en Europe, soit un adulte sur quatre, ont une forme de handicap

  2. Meilleure notation : Le Play Store évalue et affiche les fonctionnalités d'accessibilité

  3. Amélioration UX générale : Les fonctionnalités d'accessibilité bénéficient à tous (ex: sous-titres en environnement bruyant)

  4. Avantage concurrentiel : Différenciation sur un marché saturé

Coût de la non-conformité

  • Sanctions EAA : Amendes pouvant atteindre plusieurs millions d'euros selon les États membres

  • Retrait du store : Perte totale de revenus pour le marché européen

  • Atteinte à l'image : Publicité négative et avis défavorables

  • Dette technique : Résolution ultérieure plus coûteuse qu'une intégration initiale

Méthodologie : Le workflow accessibilité de Google

Google recommande une approche structurée en trois phases pour intégrer l'accessibilité dans le cycle de développement :

1. Design - Concevoir pour l'accessibilité

L'accessibilité commence dès la phase de conception. Material Design 3 intègre nativement les principes d'accessibilité :

  • Contraste des couleurs : Les palettes Material respectent automatiquement les ratios WCAG

  • Hiérarchie visuelle claire : Structure logique facilitant la navigation

  • Tailles adaptatives : Composants qui s'adaptent au dimensionnement du texte

  • États visuels distincts : Focus, hover, pressed clairement identifiables

👉 Material Design - Accessibility

2. Develop - Implémenter avec les bonnes pratiques

Durant le développement, appliquez les principes fondamentaux :

  • Descriptions de contenu pour tous les éléments interactifs

  • Zones tactiles ≥ 48dp × 48dp

  • Support du dimensionnement du texte système

  • Navigation au clavier/switch logique

  • Gestion appropriée du focus

L'essentiel de cette phase est couvert dans les sections techniques de cet article.

3. Test - Valider l'accessibilité

La validation est cruciale et multi-facettes :

  • Tests automatisés :

    • Accessibility Scanner (sur appareil)

    • Pre-launch reports de la Play Console (automatiques à chaque soumission)

  • Tests manuels : TalkBack, Switch Access, Voice Access

  • Checklists : Guidelines Material Design et WCAG 2.1

  • Tests utilisateurs : Idéalement avec des personnes en situation de handicap

Cette approche garantit que l'accessibilité est prise en compte à chaque étape, plutôt que d'être un ajout de dernière minute.

Ressources et outils

Parcours de formation recommandés

Google propose un parcours de formation structuré pour apprendre l'accessibilité Android, comprenant :

  1. Vidéos introductives :

    • Premiers pas avec l'accessibilité

    • Fonctionnement des services d'accessibilité

    • Modèle d'accessibilité Android

  2. Articles techniques :

    • Problèmes d'accessibilité courants

    • Méthodes de test

  3. Atelier pratique (Codelab) :

  4. Quiz de validation pour tester ses connaissances

👉 Accéder au parcours complet

Documentation officielle

Documentation française officielle

Ressources officielles sur l'EAA

France :

Union Européenne :

Outils de développement

  • Accessibility Scanner : Application Android pour scanner les problèmes

  • Layout Inspector : Outil Android Studio pour inspecter la sémantique

  • Compose Accessibility Testing : API de test intégrée

  • TalkBack : Lecteur d'écran de référence

  • Contrast Checker : Vérification ratios de contraste

Application de référence Google :

  • Now in Android : Application Compose complète suivant toutes les bonnes pratiques Android, incluant l'accessibilité

Conclusion

L'accessibilité en Android natif n'est plus une option en 2026, mais une obligation légale via l'EAA et une nécessité business pour toucher l'ensemble du marché. Jetpack Compose offre des API puissantes qui facilitent considérablement l'implémentation de l'accessibilité, à condition de les utiliser correctement dès la conception.

Les points clés à retenir :

  1. Intégrer dès le début : L'accessibilité "a posteriori" coûte 5× plus cher

  2. Tester avec TalkBack : C'est le minimum absolu pour valider l'accessibilité

  3. Utiliser les Semantics : Le système de sémantique Compose est votre meilleur allié

  4. Viser WCAG 2.1 AA : C'est le standard de conformité EAA

  5. Former l'équipe : L'accessibilité est une responsabilité collective

L'investissement dans l'accessibilité génère un retour positif mesurable : marché élargi, meilleure satisfaction utilisateur, conformité réglementaire et différenciation concurrentielle. Dans le contexte de l'EAA, c'est aussi une protection essentielle contre les risques légaux et financiers.p


Cet article a été rédigé en février 2026 sur la base des dernières recommandations de Google, de la norme EN 301 549 et des exigences de l'European Accessibility Act.

More from this blog

N

Niji.tech, c’est le meilleur de la tech by Niji

57 posts

Niji.tech, c’est le meilleur de la tech by Niji :
du web, du mobile, de l'agile, du design, de l'IA, des bonnes pratiques, et plus encore !