Sviluppare app Android accessibili

Logo android

Realizzare un’app accessibile non è solo un dovere dello sviluppatore ma è soprattutto un’opportunità per migliorare l’applicazione rendendola utilizzabile da chiunque.

Partiamo da una definizione di accessibilità.

Per accessibilità intendiamo una caratteristica di un dispositivo, di un servizio, di una risorsa o di un ambiente d’essere fruibile con facilità da una qualsiasi tipologia di utente.

L’accessibilità è una parte fondamentale da considerare quando si sviluppa un’applicazione. Quando si crea una nuova app o si aggiorna una già esistente bisogna considerare l’accessibilità di tutti i componenti che compongono il sistema.

Integrando le componenti hardware e software già esistenti sugli smartphone destinate all’accessibilità con funzionalità e servizi da implementare, si può migliorare l’usabilità della propria app, in particolare per gli utenti con disabilità.

Questo articolo non vuole essere un tutorial sulla programmazione di app accessibili (per esempi pratici basta eseguire una ricerca su Google) ma vuole offrire una panoramica generale sui vari aspetti da affrontare per sviluppare un sistema utilizzabile da chiunque e capire quali vantaggi possa offrire, quanto lavoro c’è da fare e cosa comporta avere un’app completamente accessibile.

Ma perché bisogna sviluppare un’applicazione per questa tipologia di utenti?

Dal punto di vista dello sviluppo, l’accessibilità aumenta la portata dell’app. Infatti secondo la Banca Mondiale, il 15% della popolazione risulta avere qualche tipo di disabilità. Le persone con disabilità utilizzano applicazioni per comunicare, apprendere, lavorare e muoversi con lo scopo di migliorare la propria vita quotidiana. Rendere un’app accessibile permette di raggiungere qualsiasi tipo di utente, aumentando i possibili utenti che possono usufruire del prodotto.

L’accessibilità, inoltre, migliora la versatilità dell’app. Tutto ciò, infatti, permette di rendere più semplice l’utilizzo dell’app per tutti i tipi di utente. Rende il sistema più facile, l’utente avrà meno difficoltà ad apprendere come si usa e probabilmente continuerà ad utilizzare l’applicazione.

In più, può semplificare l’utilizzo dell’applicazioni in alcuni momenti della giornata: se ad esempio si possono utilizzare i comandi vocali l’app può essere usata anche quando si hanno le mani occupate.

Questo vuol dire che sviluppare un’applicazione accessibile non è rivolto solamente a persone con disabilità ma a tutti perché rende più semplice l’utilizzo dell’applicazione in vari contesti.

Come si programma IN MODO accessibile?

Programmare un’app accessibile non è tanto diverso dal progettare un sito web che rispetti le linee guida del W3C (World Wide Web Consortium).

Infatti, come per un sito web, l’obiettivo è quello di permettere a chiunque di utilizzare la propria app. In questo modo l’app può essere scaricata da tutti, senza distinzioni o limitazioni di utilizzo ed avere un maggior numero di possibili utenti.

Ovviamente il lavoro che c’è dietro alla realizzazione di un’app accessibile è più lungo e faticoso rispetto allo sviluppo di un sito web ma seguendo fino in fondo questo articolo si potrà avere un’idea generale su come va impostato tutto il lavoro partendo dall’analisi dei requisiti di accessibilità fino alla realizzazione ed il test utente.

Seguendo i vari spunti presenti qui sotto si potrà iniziare ad avere un’idea su come realizzare un’applicazione più fruibile da tutti gli utenti a prescindere dal fatto che siano disabili o meno.

Analisi iniziale dei requisiti di accessibilità

Prima di procedere allo sviluppo dell’applicazione bisogna eseguire una fase di analisi dei requisiti per capire quali aspetti dell’accessibilità il sistema deve trattare.

In questa fase si devono decidere tutte le componenti da inserire all’interno dell’app, come migliorarle per renderle accessibili a chiunque.

E’ importante seguire uno schema ben preciso per rendere l’app semplice ed usabile. Infatti bisogna scegliere anche il modo in cui l’utente potrà navigare all’interno delle varie pagine del sistema e dovrà essere il più chiaro e semplice possibile.

Dopo aver stabilito quali aspetti dell’accessibilità dovranno essere inseriti all’interno dell’applicazione bisogna effettuare una ricerca per capire quali componenti sono già integrati all’interno del sistema e quali ancora sono da sviluppare. Questa parte verrà trattata dettagliatamente più avanti.

Linee guida per la realizzazione:

Quando si programma bisogna tenere conto di queste 3 linee guida:

1- Progettare un’app che supporti le necessità dell’accessibilità, cioè bisogna permettere a tutti gli utenti di interagire con il sistema facilmente.

2- Sviluppare l’app con le migliori pratiche di accessibilità, cioè utilizzare tutte quelle tecniche che migliorano l’esperienza utente come ad esempio un buon contrasto tra i colori, dimensioni del testo e molto altro.

3- Eseguire dei test di accessibilità, cioè integrare dei test di utilizzo dell’app in modo da controllare il grado di accessibilità. Per semplificare questa fase si possono utilizzare i servizi già esistenti di Android come TalkBack e Switch Access.

TalkBack e Switch Access sono servizi già esistenti che aiutano a capire l’esperienza degli utenti con esigenze di accessibilità.

TalkBack è lo screen reader di Google integrato nei dispositivi Android ed offre una funzionalità di lettura vocale che ti consente di utilizzare il dispositivo senza dover guardare lo schermo del dispositivo. Dalla versione 8.0 si potrà trovare questo servizio nell’App Android Accessibility Suite che ha sostituito la vecchia app Google Talkback.

Switch Access è un servizio che permette l’utilizzo dello smartphone attraverso i vari sensori senza dover utilizzare il touchscreen. Switch Access è utilissimo per gli utenti che presentano difficoltà motorie che non consentono loro di interagire direttamente con il device. Per poter utilizzare Switch Access bisogna avere uno di questi sensori:

  • un sensore esterno con connessione USB o Bluetooth che invia un segnale di pressione di un tasto al dispositivo
  • Una tastiera esterna
  • I pulsanti del dispositivo Android come ad esempio i pulsati per regolare il volume.

L’attivazione di questi sistemi può avvenire durante la fase di configurazione dello smartphone o in un successivo momento modificando le impostazioni del dispositivo.

Come si può già intuire molti servizi di interazione sono già esistenti e basta solo implementarli nel proprio codice. Ma tutto ciò non esclude la possibilità di creare nuovi modelli per migliorare l’accessibilità ed aiutare persone con particolari disabilità o per risolvere un determinato requisito richiesto dall’applicazione.

Per capire come realizzare nuovi sistemi bisogna apprendere come costruire Services accessibili.

Una service accessibile è una parte di applicazione che permette di apportare miglioramenti all’interfaccia utente allo scopo di assistere gli utenti con disabilità o che potrebbero temporaneamente non essere in grado di interagire pienamente con il dispositivo. In pratica, fornisce la possibilità di avere feedback aggiuntivi di forme diverse rispetto ai soliti.

La possibilità di costruire tali services è stata introdotta con la versione di Android 1.6 e ha ricevuto significative migliorie dalla versione 4.0. Pertanto costruire ora nuove services accessibile permette di avere un’applicazione compatibile con tutte le versioni di Android presenti attualmente sul mercato.

Configurazione di una service accessibile

La prima cosa da fare è la dichiarazione nel Manifest dell’applicazione. Il Manifest è una delle parti più importanti in un’app in quanto, in esso, vengono dichiarati tutte le activity, le services e le librerie che compongono l’intero progetto.

Una volta dichiarata la services si passa a definire l’intera configurazione cioè il nome, il tipo di evento, le varie impostazioni ecc…

Metodi della services

Una service accessibile deve estendere la classe AccessibilityService ed effettuare l’override dei metodi di tale classe.

Tra i più importanti troviamo il metodo onServiceConnected(), che ci permette di far svolgere diverse operazione quando avviene correttamente la connessione alla service, il metodo onInterrupt() che ci permette di mettere in pausa la service, il metodo onUnbind() che ci permette di gestire il tutto quando l’app viene chiusa o il dispositivo viene spento (la service occupa memoria, quindi bisogna ottimizzare l’utilizzo).

Il metodo principale, però, è il metodo onAccessibilityEvent(), che possiamo definirlo come il cuore del funzionamento della service. Ad esempio possiamo gestire diversi feedback da mostrare all’utente in base alla disabilità quando l’utente clicca un determinato bottone.

Registro degli eventi di accessibilità

Una delle funzioni più importanti dei parametri di configurazione del servizio di accessibilità è consentire all’utente di specificare quali tipi di eventi di accessibilità possono essere gestiti dal servizio.

È molto importante questa parte della configurazione in quanto permette alle diverse services di accessibilità implementate nell’app di cooperare tra loro e avvantaggia lo sviluppatore in quanto dovrà solamente gestire casi specifici di accessibilità.

Quindi, in fase di configurazione, bisogna prestare molta attenzione a quali eventi la service può gestire. È buona norma gestire ogni caso di accessibilità con delle services separate in modo da migliorare l’esperienza utente e rendere l’app più efficiente.

Nuove funzionalità con Android 8.0

Android 8.0 ha portato molte novità per la creazione di services accessibili.

Tra le più importanti troviamo la gestione totale dell’output audio indipendentemente dai suoni del device. In poche parole permette di gestire i livelli di suono dell’app in maniera autonoma rispetto ai livelli di suono predefiniti dello smartphone.

Un’altra novità riguarda l’implementazione di shortcut con cui gli utenti possono abilitare e disabilitare il loro servizio di accessibilità preferito da qualsiasi schermata premendo a lungo entrambi i tasti volume allo stesso tempo. Sebbene questo collegamento abiliti e disabiliti Talkback per impostazione predefinita, un utente può configurare il pulsante per abilitare e disabilitare qualsiasi servizio, incluso il proprio, installato sul proprio dispositivo.

Per consentire agli utenti di accedere a un particolare servizio di accessibilità dal collegamento dell’accessibilità, il servizio deve richiedere la funzionalità in fase di esecuzione, quando viene avviata.

Sui dispositivi con Android 8.0 il lato destro della barra di navigazione include un pulsante di accessibilità. Quando gli utenti premono questo pulsante, possono richiamare una delle diverse funzioni e servizi di accessibilità abilitati, a seconda del contenuto attualmente visualizzato sullo schermo.

In più tutte le services di accessibilità su un dispositivo 8.0 possono essere attivate tramite un meccanismo di input alternativo, a scorrimento direzionale (su, giù, sinistra e destra) lungo il sensore di impronte digitali del dispositivo.

A partire da Android 8.0 il servizio di sintesi vocale (TTS) di Android è in grado di identificare e pronunciare frasi in più lingue all’interno di un singolo blocco di testo. Questa funzione è utilissima in quanto permette allo sviluppatore di progettare un’app multi lingua e con la possibilità di lettura automatica del testo per utenti con disabilità o per utenti che in un determinato momento della giornata non possono avere un feedback visivo (ad esempio mentre guida).

Come rendere l’app ancora più accessibile

La maggior parte delle disabilità degli utenti che utilizzano uno smartphone Android riguardano la cecità o ipovisione, daltonismo, sordità o udito compromesso e capacità motorie limitate. Quando si sviluppa un’app bisogna tenere conto di tutti questi problemi con lo scopo di migliorare l’esperienza dell’utente migliore.

Nella maggior parte dei casi, rendere la propria app Android più accessibile non richiede una ristrutturazione completa del codice. Piuttosto, significa lavorare su come gli utenti interagiscono con la propria app e fornire un feedback appropriato agli utenti in base alle loro interazioni.

Testo alternativo

È importante fornire etichette utili e descrittive che spieghino il significato e lo scopo di ciascun elemento presente nell’interfaccia utente. Queste etichette permettono agli screen reader, come il TalkBack, di spiegare correttamente il contenuto presente nella pagina agli utenti che hanno problemi agli occhi.

Organizzazione dei contenuti

È necessario organizzare i contenuti in modo da rispecchiare i raggruppamenti naturali. In questo modo gli utenti non hanno bisogno di scorrere, scansionare o aspettare tanto per scoprire tutte le informazioni presenti sulla pagina.

Se si hanno pochi contenuti, o semplici, si consiglia di organizzare il tutto in una singola pagina mentre per strutture più complesse si consiglia di distribuire il contenuto su più pagine collegate tra loro tramite pulsanti o link.

Navigazione semplice

Durante la progettazione delle varie pagine dell’app bisogna costruire una semplice navigazione tra di esse per rendere più semplice l’utilizzo dell’app.

Bisogna assicurarsi che gli utenti possano navigare nell’app utilizzando tastiere o gesti di navigazione ed evitare che elementi dell’interfaccia svaniscano o scompaiano dopo un certo periodo di tempo troppo breve.

In più, è buona norma fornire un feedback all’utente ad ogni gesto che compie utilizzando l’app.

Transizioni

Quando avviene un passaggio da una vista e quella successiva bisogna cercare di rendere tale passaggio il più continuativo possibile. Se questo passaggio avviene durante un task che l’utente sta svolgendo bisogna riprendere il punto interrotto e far capire all’utente da dove deve riprendere.

Semplificare gli eventi touch

Molto spesso le zone di touch, ossia quelle zone che permettono un’interazione tra utente e sistema, sono di dimensioni ridotte.

Per facilitare l’utente, bisogna rispettare la dimensione minima (48 dp x 48dp) in cui l’utente può interagire. Questo è dovuto al fatto che spesso utilizzano supporti alle mani che rendono le dita più larghe o perché hanno difetti motori o visivi.

Ricorda: largo è sempre meglio.

Colore

Il colore può aiutare a comunicare umore, tono e informazioni critiche.

Bisogna utilizzare il colore in modo che tutti gli utenti possano capire che il contenuto è fondamentale per la progettazione accessibile.

Scegliere sempre colori primari, secondari e assicurarsi un sufficiente contrasto di colore tra gli elementi in modo che gli utenti ipovedenti possano vedere e utilizzare l’applicazione.

Contrasto cromatico

Le persone con problemi di vista e coloro che utilizzano dispositivi con display attenuati possono avere difficoltà a leggere le informazioni sullo schermo. Fornendo rapporti di contrasto più elevati tra i colori di primo piano e di sfondo nell’app, gli utenti possono navigare più facilmente all’interno e tra gli schermi.

Un esempio di buon contrasto è uno sfondo bianco con testo scritto in nero. Un errore grave è quello di utilizzare una carattere in scala di grigio su sfondo bianco o su sfondo nero che rendono impossibile la leggibilità del testo.

Per controllare il livello di contrasto si possono utilizzare tool online che restituiscono il ratio di contrasto.

Usare segnali diversi dai colori

Per assistere gli utenti con problemi di visione dei colori, utilizzare segnali diversi dal colore per distinguere gli elementi dell’interfaccia utente negli schermi dell’app. Queste tecniche potrebbero includere l’utilizzo di forme o dimensioni diverse, fornendo testo o schemi visivi, o l’aggiunta di feedback audio o tattili per segnare le differenze degli elementi.

Un esempio può essere una casella di testo in cui scrivere una nota di massimo 100 parole. Se si supera il limite massimo è buona norma inserire magari un messaggio, in cui si segnala il superamento del limite, che accompagna il colore rosso utilizzato per segnalare un errore all’utente (chi ha problemi di daltonismo o di visione dei colori potrebbe non capire cosa non funziona).

Loghi

Per quanto riguarda i loghi utilizzati come elementi decorativi, essi non devono soddisfare nessun rapporto di contrasto. Se invece si associa ad un elemento decorativo una funzione importante bisogna rispettare i requisiti di contrasto e rendere l’elemento distinguibile dal resto dei contenuti.

Tipografia

Per migliorare la leggibilità, gli utenti potrebbero avere la necessità di aumentare la dimensione del carattere. Le dimensioni a schermo possono essere gestite sia esternamente all’applicazione (attraverso le impostazioni dello smartphone) sia internamente (inserendo una pagina di impostazioni in cui l’utente può modificare la dimensione carattere).

Testo semplice

Come visto prima, ci sono molti Screen Reader che permettono di leggere il testo a chi non può vederlo. È buona norma scrivere frasi semplici e corte in modo da aver un tempo di lettura breve e permettere all’utente di capire meglio la frase che sta ascoltando.

Per quanto riguarda l’etichetta di descrizione di un bottone si consiglia sempre di utilizzare un verbo che permette di far capire l’azione che verrà svolta se si cliccherà sul pulsante.

Per descrivere contenuti grafici si utilizzano verbi che descrivono l’azione o il simbolo corrispondente.

Contenuti multimediali accessibili

Se l’app include elementi multimediali come ad esempio i video è buona norma inserire alcune funzionalità per migliorare l’accessibilità di tali element.

Ad esempio si possono inserire i pulsanti di controllo video (play/pausa, torna indietro, torna avanti) o la possibilità di sottotitoli o una trascrizione scritta del contenuto del video.

Suoni e audio

Bisogna fornire un’alternativa visiva al suono e viceversa. Come per i video è buona norma fornire dei sottotitoli di supporto all’audio.

Come visto in precedenza c’è la possibilità di consentire all’utente di utilizzare l’app attraverso suoni o audio. Quando si utilizza uno screen reader come TalkBack e si naviga con l’esplorazione del tocco, le etichette vengono pronunciate a voce alta quando gli utenti toccano gli elementi dell’interfaccia utente con la punta delle dita.

Movimento

È importante utilizzare il movimento di oggetti per focalizzare l’attenzione su una parte di vista.

Le superfici si trasformano in punti focali che l’utente deve seguire e gli elementi non importanti vengono rimossi.

Per aiutare le persone con sensibilità al movimento bisogna attenersi a delle regole del W3C per la creazione dell’interfaccia grafica:

Se l’app presenta del contenuto dinamico o lampeggiante è buona norma inserire un pulsante per mettere in pausa il contenuto grafico. Bisogna limitare il contenuto lampeggiante a tre volte in un periodo di un secondo per soddisfare le soglie flash e rosse lampeggianti ed evitare zone lampeggianti nella zona centrale dello schermo.

Time Control

I controlli di un’app possono essere impostati per scomparire dopo un certo periodo di tempo. Ad esempio, cinque secondi dopo l’avvio di un video, i controlli di riproduzione potrebbero sbiadirsi dallo schermo.

Per quanto riguarda funzionalità importanti bisogna evitare questo tipo di controllo in quanto l’utente deve avere tutto il tempo necessario per svolgere l’attività.

Popup

Se all’interno dell’applicazione si vuole inserire un popup contenente un messaggio o un alert è buona norma posizionarlo nel centro pagina in quanto è il punto dove si focalizza maggiormente l’occhio (ed è anche uno standard).

Layout

Si consiglia di utilizzare un layout di tipo responsive in quanto adatta il contenuto alle dimensioni delle schermo dello smartphone dell’utente. In questo modo gli oggetti che costruiscono l’interfaccia utente vengono scalati in relazione alle dimensioni dello schermo.

Progettare un layout chiaro e pulito aiuta l’utente a navigare correttamente all’interno dell’applicazione.

Infine, bisogna segnalare con maggior rilievo le zone in cui l’utente può interagire con l’app compiendo azioni.

Correlazione tra elemento e ruolo

Ogni elemento deve essere riconoscibile ed avere un ruolo preciso per migliorare l’accessibilità. Questo significa che un pulsante deve essere impostato come un pulsante e una casella di controllo come una casella di controllo, in modo che il tipo o lo stato del controllo vengano comunicati correttamente all’utente.

Bottoni

Il bottone deve avere una forma che favorisca all’utente l’azione da compiere ossia il click. Si consiglia di evitare forme strane, bottone trasparenti o bottoni con solo loghi in quanto potrebbero essere poco chiari per molte tipologia d’utente (ogni utente può assegnare un significato diverso ad un’icona).

Inserire una documentazione di aiuto

È importante inserire una vista contenente delle informazioni di aiuto nell’utilizzo dell’applicazioni. Spesso si inserisce l’help nel menu a comparsa presente in alto a destra detto “hamburger” per via della sua icona.

Aggiornamento dell’app

Si consiglia di effettuare operazione di manutenzione ed aggiornamento del software periodicamente visto che, durante l’utilizzo, verranno scovati probabili bug dagli utenti che utilizzeranno l’applicazione.

In più, periodicamente (circa una volta all’anno) viene rilasciata una nuova versione del sistema operativo Android che, da un lato, aumenta le funzionalità, ma dall’altro comporta una serie di operazione di correzioni su quelle parti che risultano deprecate o che risultano non compatibili con la nuova versione del sistema.

Ricordarsi sempre che un’applicazione deve essere compatibile con tutti i sistemi operativi Android presenti sul mercato ed ottimizzata per le versioni più recenti.

Costruire “VIEW” accessibili

Molto spesso una pagina dell’app è composta da sotto parti denominate View o fragment. Queste parti permettono di personalizzare al massimo la nostra applicazione inserendo ad esempio calendari, widget di applicazioni esterne e molte altre cose che migliorano l’aspetto.

Bisogna fare un lavoro aggiuntivo per rendere queste parti accessibili in quanto sono parti esterne alla nostra app che vengono richiamate in porzione di pagina.

Pertanto bisogna manipolare il loro funzionamento per permettere a tutti gli utenti di poterle utilizzare.

Ad esempio gestire un calendario esterno può sembrare banale ma presenta molto lavoro indietro. Basta solo pensare a come segnalare il giorno attuale o il giorno scelto del mese. I calendari, di solito, presentano una vista mensile e chi ha problemi di vista può non riconoscere tutte le caselle che formano il calendario e dunque non riconoscere il giorno segnalato.

Per renderlo accessibile si potrebbe pensare di inserire una funzione che colora il giorno scelto (potrebbe aiutare per chi ha problemi di vista limitata) o inserire una funzione vocale per chi è ipovedente, in modo da leggere il numero, il nome del giorno e il mese scelto. Per chi invece ha problemi motori si può pensare di inserire due pulsanti per scorrere avanti e indietro il calendario senza per forza cliccare le piccole caselle dei giorni del mese.

Personalizzare i “Click”

A livello di codice è utile effettuare un override del metodo PerformClick() che permette di personalizzare le funzioni delle varie parti di interazione in base alla pressione del click. Questo è utile per diversificare le varie pressioni che le diverse tipologie di utenti possono effettuare per attivare le funzionalità dell’app ed assegnare ogni pressione ad un evento di accessibilità diverso.

Un consiglio

Oramai la maggior parte dei dispositivi Android sono completamente accessibili visto che implementano già molti sensori hardware che permettono di aiutare la persona con disabilità nell’utilizzo dello smartphone.

Il sistema operativo Android, negli anni, ha implementato numerosissime funzionalità riguardanti l’accessibilità.

Può capitare di pensare che la propria idea sia nuova, ancora da “scoprire” ma spesso è solo un’illusione momentanea (purtroppo).

Prima di addentrarsi in ore ed ore di codice bisogna sempre controllare la guida di sviluppo Android e tutte le API già esistente: a volte basta unire una o più API per ottenere la funzionalità desiderata.

Testare un’applicazione accessibile

Eseguire test per l’accessibilità consente di sperimentare l’app dal punto di vista degli utenti e di trovare i problemi relativi all’usabilità che altrimenti non si noterebbero.

I test aiutano rivelano nuove opportunità per rendere migliore l’applicazione, per renderla più potente e versatile per tutti gli utenti possibili, compresi quelli che hanno disabilità.

Per avere ottimi risultati si consiglia di eseguire una combinazione dei test seguenti:

Test manuale: interagisci con la tua app utilizzando i servizi di accessibilità Android.

Test con strumenti di analisi: utilizza gli strumenti per scoprire le opportunità per migliorare l’accessibilità della tua app.

Test automatici: attivare i test di accessibilità in Espresso e Robolectric.

Test utente: ottieni feedback da persone reali che interagiscono con la tua app.

Test manuale

Il test manuale permette allo sviluppatore di indossare i panni dell’utente e provare l’applicazione come se lo fosse. In base alle diverse disabilità che l’utente può avere l’app mostrerà una diversa forma all’utente. Questo test è utile per analizzare le diverse interfacce con cui l’app si mostra per le diverse forme di accessibilità affrontate e capire se c’è qualcosa da migliorare o da semplificare.

In questa fase si consiglia di utilizzare l’app con i servizi visti in precedenza come TalkBack, Switch Access e BrailleBack che consente di connettere un monitor Braille ad un device Android via bluetooth. Da segnalare la versione beta del Voice Access in lingua inglese che permette di controllare il dispositivo Android con il solo utilizzo della voce.

Test con strumenti di analisi

Questo test è legato al precedente in quanto permette allo sviluppatore di avere strumenti di analisi per capire e monitorare il funzionamento complessivo dell’app.

Con questi strumenti è possibile avere un risultato migliori sulla prestazione dell’app in quanto può misurare alcuni aspetti che con il test manuale vengono trascurati o che risultano essere troppo complessi da valutare senza uno strumento di appoggio. Ad esempio questi strumenti di test dell’accessibilità sono utili per rilevare errori frequenti quali la mancanza di descrizioni dei contenuti o l’utilizzo di contrasto insufficiente e touch target troppo piccoli.

Scanner di accessibilità

L’app Accessibility Scanner esegue la scansione dello schermo e fornisce suggerimenti per migliorare l’accessibilità della tua app. Accessibility Scanner utilizza Accessibility Testing Framework e fornisce suggerimenti specifici dopo aver consultato etichette di contenuto, elementi cliccabili, contrasto e altro.

Accessibility Scanner è scaricabile direttamente dal Play Store di Google, gratuitamente ed è disponibile per telefoni e tablet che hanno la versione di Android 6.0 o versioni successive.

Node tree Debugging

I servizi di accessibilità utilizzano una rappresentazione separata dell’interfaccia utente della propria app per funzionare. Mentre si esegue il debug, potrebbe risultare utile visualizzare la gerarchia e gli attributi degli elementi dell’interfaccia utente nello stesso modo in cui i servizi di accessibilità li visualizzano. Per eseguire questa operazione, è possibile utilizzare il debug degli alberi dei nodi. Questo strumento, disponibile in TalkBack, fornisce informazioni su come un AccessibilityService, come TalkBack, visualizza gli elementi dell’interfaccia utente all’interno della tua app.

UI Automator Viewer

Questo strumento fornisce una comoda GUI per la scansione e l’analisi dei componenti UI visualizzati su un dispositivo Android.

È possibile utilizzare UI Automator per ispezionare la gerarchia del layout e visualizzare le proprietà dei componenti dell’interfaccia utente visibili in primo piano sul dispositivo.

Queste informazioni sono utili per lo sviluppatore in quanto permettono multipli test da eseguire sia sull’intera interfaccia che su parti parziali.

Nei test di accessibilità, questo strumento è importante per risolvere i problemi sorti utilizzando i metodi precedenti visti. Ad esempio se con il test manuale si rileva una porzione di vista in cui del testo non riesce ad essere pronunciato (per chi ha problemi di cecità), tramite questo strumento è possibile individuare la fonte del bug che provoca l’errore ed andarlo a correggere in una successiva fase di re-programmazione.

Lint

Uno degli ambienti di sviluppo migliori per sviluppare applicazioni Android è Android Studio.

Android Studio mostra dei Lint warning ossia dei messaggi di avviso che possono essere causati da eventuali problemi di accessibilità o mancanze nel codice. In più, fornisce direttamente il collegamento alla porzione di codice sorgente in cui si manifesta il problema.

Se ad esempio compare un Lint Warning di mancanza di contenuto di descrizione (Testo alternativo) potrebbe capitare che degli utenti che usano lo Screen Reader non siano in grado di capire il significato dell’immagine.

Test automatici

Come detto prima esistono alcuni framework come Espresso e Robolectric che consentono di creare ed eseguire test automatici allo scopo di valutare l’accessibilità e usabilità della propria applicazione.

Espresso

Espresso è una libreria di test Android progettata per rendere l’interfaccia utente facile e veloce. Consente di interagire con gli elementi grafici dell’interfaccia che devono essere testati dell’applicazione e di decidere se determinati avvenimenti si verificano o che si verificano condizioni specifiche. Grazie ad esso, quindi, è possibile determinare se l’interfaccia progettata sia intuitiva per l’utente e rispetti le specifiche dell’accessibilità.

Robolectric

Robolectric è una libreria di test open source che consente di testare codice Android su una Java Virtual Machine senza la necessità di utilizzare un dispositivo reale o un dispositivo virtuale creato attraverso un emulatore.

Test Utente

Si può definire il test utente come la prova del 9. Infatti, sarà il primo contatto tra l’applicazione e degli utenti reali.

È importante definire un campionamento sufficientemente ampio e che rispetti tutti i possibili utenti che potrebbero utilizzare l’applicazione in futuro.

Una volta definitivo il campione bisogna far svolgere agli utenti diversi task e valutare sia qualitativamente che quantitativamente la loro esperienza d’uso.

Dopo aver analizzato tutti i dati si potrà capire se l’applicazione ideata soddisfi tutte le richieste degli utenti. In caso affermativo l’applicazione sarà pronta per essere lanciata sul mercato altrimenti bisognerà capire cosa non va, come migliorare quella parte e sistemare l’applicazione in una nuova fase di progettazione. Spesso bastano solo piccole modifiche all’interfaccia grafica, in quanto è la parte che permette agli utenti di interagire con l’intero sistema.

Ci sono diversi metodi per trovare il campione di utenti più adatto alle proprie esigenze. Principalmente conviene sempre effettuare una ricerca di persone appartenenti ad organizzazioni locali, università o che utilizzino un sistema concorrente o simile a quello sviluppato. Nel caso di app per disabili, quindi un’app accessibile, conviene avere un campione formato da persone con diverse disabilità per provare tutti i servizi di accessibilità implementati.

Altrimenti se non si ha la possibilità di effettuare ricerche locali si possono utilizzare i social network, siti destinati ai test utente come ad esempio usertesting.com o forum di accessibilità.

Tra i test questo è il più importante, perché alla fine quello che conta è il giudizio dell’utente.

Considerazioni finali

Come detto inizialmente, sviluppare app accessibili non è solo un dovere ma è una grossa opportunità.

Oltre al fatto di rendere l’app utilizzabile a chiunque permette di aiutare qualsiasi persona con disabilità a svolgere un’attività della propria vita quotidiana.

La tecnologia deve essere libera da tutte le barriere, da tutti gli ostacoli presenti e deve essere fruibile da chiunque.

Negli anni sono state sviluppate numerosissime app accessibili o destinate esclusivamente a persone con diverse tipologie di disabilità. Nel sito sono presenti diversi articoli che trattano di queste applicazioni. Ad esempio l’app Kimap aiuta il disabile a sconfiggere le barriere architettoniche durante un viaggio o una passeggiata, l’app Open Paestum permette di far rivivere la storia di quel tempo grazie alla realtà virtuale, Be My Eyes aiuta i non vedenti nella vita quotidiana (anche solamente segnalare che una bottiglia di latte è scaduta aiuta) e ce ne sono molte altre, che nel loro piccolo, semplificano un’attività dell’utente con problemi di disabilità.

Google incoraggia molto gli sviluppatori ed i publisher a progettare e sviluppare applicazioni e prodotti tenendo in considerazione l’accessibilità. Ogni anno assegna diversi premi alle app che si sono contraddistinte in questo campo e da poco ha lanciato il programma “Google Impact Challenge: disabilità” in cui vengono presentate idee e tecnologie emergenti che consentono alla persone con disabilità di essere più indipendenti e di avere più possibilità.

L’accessibilità delle applicazioni garantisce la parità di accesso a circa un miliardo di disabili presenti in tutto il mondo, permettendo al contempo alle persone prive di disabilità di personalizzare la propria esperienza.

Ovviamente non sempre la tecnologia ha la possibilità di aiutare qualcuno per svolgere un’attività. Spesso le applicazioni uniscono la parte software, quindi la parte tecnologica, ad una parte umana, coinvolgendo una comunità di volontari che offrono il proprio aiuto al servizio degli altri.

Le disabilità non sono un limite ma una sfida, una sfida da affrontare tutti insieme tenendo sempre a mente uno dei principi fondamentali della programmazione: “L’utente viene prima di tutto: il resto viene dopo”.

 

FONTI

  1. Il Manuale dello sviluppatore “Android 6. Guida per lo sviluppatore” di Massimo Carli 
  2. Guida sviluppatori Android  online developer.android.com
  3. Sito material design  https://material.io/design/usability/accessibility.html
  4. Supporto Google sull’accessibilità  https://support.google.com/