SlideShare a Scribd company logo
Designing Accessible
Android Applications
April 9, 2013




                  Google Confidential and Proprietary
Agenda


●   What is accessibility?
●   What features are available?
●   How do you make your app accessible?
●   Testing and Debugging




                                           Google Confidential and Proprietary
Google Confidential and Proprietary
What framework provides


● User interactions and system events generate
  AccessibilityEvents and send them to services
● AccessibilityServices like TalkBack respond to
  these events and provide feedback to the user




                                         Google Confidential and Proprietary
What framework provides


Donut (1.6) through Honeycomb (3.x)
● Spoken feedback through TextToSpeech APIs
● Modify your device's display and sound options
   ○   Large text
   ○   Change speed at which text is spoken
   ○   Disable screen rotation

Ice Cream Sandwich (4.0)
 ● Touch exploration for devices without D-Pad
 ● Services can inspect view hierarchy




                                              Google Confidential and Proprietary
What framework provides


JellyBean (4.1)
●   Supports Accessibility focus
    ○   Services can place this focus
        on any view
    ○   Indicated on-screen via
        yellow rectangle

●   Supports Braille I/O devices
    via BrailleBack service




                                        Google Confidential and Proprietary
What framework provides


JellyBean (4.1)
● Many actions available
    ○   Move input focus
    ○   Click on views
    ○   Scroll within views
    ○   Navigate text by words, etc.
    ○   Perform global actions




                                       Google Confidential and Proprietary
Features in Jelly Bean


Gestures
● Services can respond to user-
  drawn gestures
   ○ Perform accessibility actions
   ○ Invoke global actions (Home,
       Back, etc.)

● Deterministic access to
  screen content




                                     Google Confidential and Proprietary
Features in Jelly Bean


Magnification
● Available in Android 4.2
● Multiple zoom modes
    ○   Triple-tap to toggle
    ○   Triple-tap and hold for
        momentary zoom




                                  Google Confidential and Proprietary
Features in Jelly Bean


Gestures
● Quick shortcuts available in
  Global Context Menu
    ○   Pause feedback
    ○   Repeat/spell last utterance
    ○   TalkBack Settings




                                      Google Confidential and Proprietary
(demo)

         Google Confidential and Proprietary
What framework provides


Android sensors

●   SMS, Video chats, Videos with Captions
●   Location aware, GPS, maps, places
●   proximity
●   eyes free - motion / accelerometer / velocity tracker / light sensor
●   motion, environmental and position sensors

Read the Android Developer Guide for Sensors




                                                          Google Confidential and Proprietary
What framework provides
Google Play
● Paid apps in many Countries
● DCB

Developer Console
● Countries and currencies
● Auto Translate feature
● Statistics

Global accessibility
● i18n and l10n


Read the Android Developer Guide for Localization


                                             Google Confidential and Proprietary
What framework provides


Design recommendations
●   Navigation should be easy
●   Use recommended touch target sizes
●   Alternatives to time-out controls
●   Label UI elements meaningfully
    ○   Minimize Chatter
    ○   Provide feedback

Read the Android Design Guide for Accessibility




                                             Google Confidential and Proprietary
(demo)

         Google Confidential and Proprietary
Code changes for Accessibility


Labeling content
● Controls without text need android:contentDescription
● Android Lint tool warns when images are missing descriptions
● Purely decorative Views should set android:
  contentDescription="@null"
● Use setContentDescription() to update a View's description
   ○   Don't override getContentDescription()
● EditTexts should use android:hint




                                                   Google Confidential and Proprietary
<ImageView android:id="@+id/rounded_corner"
   android:contentDescription="@null"
  ... />

<ImageView android:id="@+id/search_button"
   android:focusable=”true”
   android:contentDescription="@string/search"
  ... />

<EditText android:id="@+id/search_field"
 android:hint="@string/search_hint"
 ... />


                                           Google Confidential and Proprietary
Code changes for Accessibility


Supporting D-Pad navigation
● Prior to Android 4.0, app needs to be accessible via D-Pad
    ○   Includes arrow keys on USB and Bluetooth keyboards
    ○   This is easy to test in the emulator!
● May need to manually specify that clickable items (e.g.
  ImageViews) are focusable using android:focusable="true"
● Make important text focusable
● Control order using android:nextFocusDown




                                                         Google Confidential and Proprietary
<LinearLayout android:orientation="horizontal"
     ... >
  <EditText android:id="@+id/edit"
     android:focusable=”true”
     android:nextFocusDown=”@+id/text”
     ... />
  <TextView android:id="@+id/text"
     android:focusable=”true”
     android:text="@string/terms_of_service"
     android:nextFocusUp=”@id/edit”
     ... />
</LinearLayout>


                                           Google Confidential and Proprietary
Code changes for Accessibility


Supporting scaled text
● Android supports large fonts for low-vision use
● Text sizes should be in sp "scaled pixels" instead of dips
● Always test your app for text cropping, wrapping, etc.
    ○   You should be doing this for i18n anyway!



<TextView android:id="@+id/intro_text"
 android:textSize="14sp"
 .... />


                                                      Google Confidential and Proprietary
(demo)

         Google Confidential and Proprietary
Logical grouping and ordering


● View hierarchy order and on-screen positioning determine grouping
  for accessibility focus and ordering of spoken feedback
● Group non-focusable items (e.g. TextViews) in a focusable
  container to have them read as a single item
● Set content description on a container to override automatic
  grouping and ordering of contained items




                                                    Google Confidential and Proprietary
Logical grouping and ordering




                                Google Confidential and Proprietary
FolderIcon android:id="@+id/folder"
     android:focusable="true"
     android:contentDescription="@string/folder_google"
     ...>
  <ImageView android:id="@+id/preview_background"
        android:contentDescription="@null"
        ... />
  <BubbleTextView android:id="@+id/folder_icon_name"
        android:text="@string/google"
        ... />
</LinearLayout>


                                           Google Confidential and Proprietary
Testing and Debugging for Accessibility


For all Android apps

    ○   Create checklist
    ○   Check with real simulation
    ○   Test on all supported Platforms
    ○   Test on screens and densities
        Screens: small, normal, large, xlarge
        Densities: (low (ldpi), medium (mdpi), high (hdpi),
        extra high (xhdpi))




                                                 Google Confidential and Proprietary
Testing and Debugging for
Accessibility

For all Android apps
● Enable Accessibility features
    ○   Turn on TalkBack logging in
        Accessibility > TalkBack >
        Settings > Developer
        settings

● Android Lint tool




                                      Google Confidential and Proprietary
Summary


Must do:
● Use built-in Android components
   ○   Label controls
   ○   Make controls focusable
   ○   Ensure traversal order is correct
   ○   Specify text in sp
   ○   Logically group UI elements
● Fix custom components
   ○   Implement accessibility interfaces
   ○   Use Support library
   ○ TouchExplorationHelper is available on Google Code
● Test and Fix



                                                  Google Confidential and Proprietary
Summary


Good to have:
● Augment audio-only prompts
    ○   Visual cues
    ○   Haptic feedback
●   Evaluate sensors
●   Add captions to videos
●   Follow UI guidelines
●   Reach globally

Read the Android Developer Guide for Accessibility




                                             Google Confidential and Proprietary
Thanks and Questions?


                Send feedback to:
                soniash@google.com

                     Google Confidential and Proprietary

More Related Content

PDF
Android accessibility till_kitkat_nov2013_andevcon
PDF
Few steps into Android
PDF
Androidify workshop
PDF
L'Express - Palmarès des hôpitaux, 2015-2016
PDF
Android accessibility 9th_april_droidcon
PDF
MAD Unit - 1 Introduction of Android IT Department
PDF
Mobile Web Rock
PPTX
Google I/O 2019 - what's new in Android Q and Jetpack
Android accessibility till_kitkat_nov2013_andevcon
Few steps into Android
Androidify workshop
L'Express - Palmarès des hôpitaux, 2015-2016
Android accessibility 9th_april_droidcon
MAD Unit - 1 Introduction of Android IT Department
Mobile Web Rock
Google I/O 2019 - what's new in Android Q and Jetpack

Similar to Droidcon 2013 accessible android apps sharma_google (20)

PDF
Android Made Simple
PDF
Introduction to Cloud Computing and Google Cloud Platform.
ODP
Java Meetup - 12-03-15 - Android Development Workshop
PPTX
A Kickstart to Google Cloud
PPTX
Getting started with cloud
PPTX
Android Presentation By Ashok Kumar Pachauri
PPTX
Android Presentation By Ashok Kumar Pachauri
PPTX
GDCS - Introduction to Google Products and Technologies.pptx
PDF
YouTube Mobile Webapp: On the edge of Html5
PDF
Google Platform Overview (April 2014)
PDF
Using the Presentation API and external screens on Android
ODP
Android App Development - 01 Introduction
PDF
Android Jump Start
PDF
Android workshop material
PDF
Vertex AI Agent Builder - GDG Alicante - Julio 2024
PDF
flutter_day_1...............................
PPTX
ch1introduction about android development.pptx
PPTX
Android App Development Using Android Studio
PDF
Android Training Course In Chandigarh
PPTX
Android Made Simple
Introduction to Cloud Computing and Google Cloud Platform.
Java Meetup - 12-03-15 - Android Development Workshop
A Kickstart to Google Cloud
Getting started with cloud
Android Presentation By Ashok Kumar Pachauri
Android Presentation By Ashok Kumar Pachauri
GDCS - Introduction to Google Products and Technologies.pptx
YouTube Mobile Webapp: On the edge of Html5
Google Platform Overview (April 2014)
Using the Presentation API and external screens on Android
Android App Development - 01 Introduction
Android Jump Start
Android workshop material
Vertex AI Agent Builder - GDG Alicante - Julio 2024
flutter_day_1...............................
ch1introduction about android development.pptx
Android App Development Using Android Studio
Android Training Course In Chandigarh
Ad

More from Droidcon Berlin (20)

PDF
Droidcon de 2014 google cast
PDF
Android programming -_pushing_the_limits
PDF
crashing in style
PDF
Raspberry Pi
PDF
Android industrial mobility
PDF
Details matter in ux
PDF
From sensor data_to_android_and_back
PDF
droidparts
PDF
new_age_graphics_android_x86
PDF
5 tips of monetization
PDF
Testing and Building Android
PDF
Matchinguu droidcon presentation
PDF
Cgm life sdk_droidcon_2014_v3
PDF
The artofcalabash peterkrauss
PDF
Raesch, gries droidcon 2014
PDF
Android open gl2_droidcon_2014
PDF
20140508 quantified self droidcon
PDF
Tuning android for low ram devices
PDF
Froyo to kit kat two years developing & maintaining deliradio
PDF
Droidcon2013 security genes_trendmicro
Droidcon de 2014 google cast
Android programming -_pushing_the_limits
crashing in style
Raspberry Pi
Android industrial mobility
Details matter in ux
From sensor data_to_android_and_back
droidparts
new_age_graphics_android_x86
5 tips of monetization
Testing and Building Android
Matchinguu droidcon presentation
Cgm life sdk_droidcon_2014_v3
The artofcalabash peterkrauss
Raesch, gries droidcon 2014
Android open gl2_droidcon_2014
20140508 quantified self droidcon
Tuning android for low ram devices
Froyo to kit kat two years developing & maintaining deliradio
Droidcon2013 security genes_trendmicro
Ad

Recently uploaded (20)

PDF
Elevate Cleaning Efficiency Using Tallfly Hair Remover Roller Factory Expertise
PDF
Chapter 5_Foreign Exchange Market in .pdf
PPTX
Dragon_Fruit_Cultivation_in Nepal ppt.pptx
DOCX
unit 1 COST ACCOUNTING AND COST SHEET
PDF
A Brief Introduction About Julia Allison
PDF
How to Get Business Funding for Small Business Fast
PDF
COST SHEET- Tender and Quotation unit 2.pdf
PDF
IFRS Notes in your pocket for study all the time
DOCX
unit 2 cost accounting- Tender and Quotation & Reconciliation Statement
PPT
Chapter four Project-Preparation material
PPTX
Amazon (Business Studies) management studies
PPTX
ICG2025_ICG 6th steering committee 30-8-24.pptx
PPTX
New Microsoft PowerPoint Presentation - Copy.pptx
PDF
Outsourced Audit & Assurance in USA Why Globus Finanza is Your Trusted Choice
PPTX
Lecture (1)-Introduction.pptx business communication
PDF
Reconciliation AND MEMORANDUM RECONCILATION
PDF
Business model innovation report 2022.pdf
DOCX
Business Management - unit 1 and 2
PDF
MSPs in 10 Words - Created by US MSP Network
PPTX
Probability Distribution, binomial distribution, poisson distribution
Elevate Cleaning Efficiency Using Tallfly Hair Remover Roller Factory Expertise
Chapter 5_Foreign Exchange Market in .pdf
Dragon_Fruit_Cultivation_in Nepal ppt.pptx
unit 1 COST ACCOUNTING AND COST SHEET
A Brief Introduction About Julia Allison
How to Get Business Funding for Small Business Fast
COST SHEET- Tender and Quotation unit 2.pdf
IFRS Notes in your pocket for study all the time
unit 2 cost accounting- Tender and Quotation & Reconciliation Statement
Chapter four Project-Preparation material
Amazon (Business Studies) management studies
ICG2025_ICG 6th steering committee 30-8-24.pptx
New Microsoft PowerPoint Presentation - Copy.pptx
Outsourced Audit & Assurance in USA Why Globus Finanza is Your Trusted Choice
Lecture (1)-Introduction.pptx business communication
Reconciliation AND MEMORANDUM RECONCILATION
Business model innovation report 2022.pdf
Business Management - unit 1 and 2
MSPs in 10 Words - Created by US MSP Network
Probability Distribution, binomial distribution, poisson distribution

Droidcon 2013 accessible android apps sharma_google

  • 1. Designing Accessible Android Applications April 9, 2013 Google Confidential and Proprietary
  • 2. Agenda ● What is accessibility? ● What features are available? ● How do you make your app accessible? ● Testing and Debugging Google Confidential and Proprietary
  • 4. What framework provides ● User interactions and system events generate AccessibilityEvents and send them to services ● AccessibilityServices like TalkBack respond to these events and provide feedback to the user Google Confidential and Proprietary
  • 5. What framework provides Donut (1.6) through Honeycomb (3.x) ● Spoken feedback through TextToSpeech APIs ● Modify your device's display and sound options ○ Large text ○ Change speed at which text is spoken ○ Disable screen rotation Ice Cream Sandwich (4.0) ● Touch exploration for devices without D-Pad ● Services can inspect view hierarchy Google Confidential and Proprietary
  • 6. What framework provides JellyBean (4.1) ● Supports Accessibility focus ○ Services can place this focus on any view ○ Indicated on-screen via yellow rectangle ● Supports Braille I/O devices via BrailleBack service Google Confidential and Proprietary
  • 7. What framework provides JellyBean (4.1) ● Many actions available ○ Move input focus ○ Click on views ○ Scroll within views ○ Navigate text by words, etc. ○ Perform global actions Google Confidential and Proprietary
  • 8. Features in Jelly Bean Gestures ● Services can respond to user- drawn gestures ○ Perform accessibility actions ○ Invoke global actions (Home, Back, etc.) ● Deterministic access to screen content Google Confidential and Proprietary
  • 9. Features in Jelly Bean Magnification ● Available in Android 4.2 ● Multiple zoom modes ○ Triple-tap to toggle ○ Triple-tap and hold for momentary zoom Google Confidential and Proprietary
  • 10. Features in Jelly Bean Gestures ● Quick shortcuts available in Global Context Menu ○ Pause feedback ○ Repeat/spell last utterance ○ TalkBack Settings Google Confidential and Proprietary
  • 11. (demo) Google Confidential and Proprietary
  • 12. What framework provides Android sensors ● SMS, Video chats, Videos with Captions ● Location aware, GPS, maps, places ● proximity ● eyes free - motion / accelerometer / velocity tracker / light sensor ● motion, environmental and position sensors Read the Android Developer Guide for Sensors Google Confidential and Proprietary
  • 13. What framework provides Google Play ● Paid apps in many Countries ● DCB Developer Console ● Countries and currencies ● Auto Translate feature ● Statistics Global accessibility ● i18n and l10n Read the Android Developer Guide for Localization Google Confidential and Proprietary
  • 14. What framework provides Design recommendations ● Navigation should be easy ● Use recommended touch target sizes ● Alternatives to time-out controls ● Label UI elements meaningfully ○ Minimize Chatter ○ Provide feedback Read the Android Design Guide for Accessibility Google Confidential and Proprietary
  • 15. (demo) Google Confidential and Proprietary
  • 16. Code changes for Accessibility Labeling content ● Controls without text need android:contentDescription ● Android Lint tool warns when images are missing descriptions ● Purely decorative Views should set android: contentDescription="@null" ● Use setContentDescription() to update a View's description ○ Don't override getContentDescription() ● EditTexts should use android:hint Google Confidential and Proprietary
  • 17. <ImageView android:id="@+id/rounded_corner" android:contentDescription="@null" ... /> <ImageView android:id="@+id/search_button" android:focusable=”true” android:contentDescription="@string/search" ... /> <EditText android:id="@+id/search_field" android:hint="@string/search_hint" ... /> Google Confidential and Proprietary
  • 18. Code changes for Accessibility Supporting D-Pad navigation ● Prior to Android 4.0, app needs to be accessible via D-Pad ○ Includes arrow keys on USB and Bluetooth keyboards ○ This is easy to test in the emulator! ● May need to manually specify that clickable items (e.g. ImageViews) are focusable using android:focusable="true" ● Make important text focusable ● Control order using android:nextFocusDown Google Confidential and Proprietary
  • 19. <LinearLayout android:orientation="horizontal" ... > <EditText android:id="@+id/edit" android:focusable=”true” android:nextFocusDown=”@+id/text” ... /> <TextView android:id="@+id/text" android:focusable=”true” android:text="@string/terms_of_service" android:nextFocusUp=”@id/edit” ... /> </LinearLayout> Google Confidential and Proprietary
  • 20. Code changes for Accessibility Supporting scaled text ● Android supports large fonts for low-vision use ● Text sizes should be in sp "scaled pixels" instead of dips ● Always test your app for text cropping, wrapping, etc. ○ You should be doing this for i18n anyway! <TextView android:id="@+id/intro_text" android:textSize="14sp" .... /> Google Confidential and Proprietary
  • 21. (demo) Google Confidential and Proprietary
  • 22. Logical grouping and ordering ● View hierarchy order and on-screen positioning determine grouping for accessibility focus and ordering of spoken feedback ● Group non-focusable items (e.g. TextViews) in a focusable container to have them read as a single item ● Set content description on a container to override automatic grouping and ordering of contained items Google Confidential and Proprietary
  • 23. Logical grouping and ordering Google Confidential and Proprietary
  • 24. FolderIcon android:id="@+id/folder" android:focusable="true" android:contentDescription="@string/folder_google" ...> <ImageView android:id="@+id/preview_background" android:contentDescription="@null" ... /> <BubbleTextView android:id="@+id/folder_icon_name" android:text="@string/google" ... /> </LinearLayout> Google Confidential and Proprietary
  • 25. Testing and Debugging for Accessibility For all Android apps ○ Create checklist ○ Check with real simulation ○ Test on all supported Platforms ○ Test on screens and densities Screens: small, normal, large, xlarge Densities: (low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)) Google Confidential and Proprietary
  • 26. Testing and Debugging for Accessibility For all Android apps ● Enable Accessibility features ○ Turn on TalkBack logging in Accessibility > TalkBack > Settings > Developer settings ● Android Lint tool Google Confidential and Proprietary
  • 27. Summary Must do: ● Use built-in Android components ○ Label controls ○ Make controls focusable ○ Ensure traversal order is correct ○ Specify text in sp ○ Logically group UI elements ● Fix custom components ○ Implement accessibility interfaces ○ Use Support library ○ TouchExplorationHelper is available on Google Code ● Test and Fix Google Confidential and Proprietary
  • 28. Summary Good to have: ● Augment audio-only prompts ○ Visual cues ○ Haptic feedback ● Evaluate sensors ● Add captions to videos ● Follow UI guidelines ● Reach globally Read the Android Developer Guide for Accessibility Google Confidential and Proprietary
  • 29. Thanks and Questions? Send feedback to: soniash@google.com Google Confidential and Proprietary