Droidcon 2013 accessible android apps sharma_google

29
Google Confidential and Proprietary Designing Accessible Android Applications April 9, 2013

description

 

Transcript of Droidcon 2013 accessible android apps sharma_google

Page 1: Droidcon 2013 accessible android apps sharma_google

Google Confidential and Proprietary

Designing AccessibleAndroid Applications

April 9, 2013

Page 2: Droidcon 2013 accessible android apps sharma_google

Google Confidential and Proprietary

Agenda

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

Page 3: Droidcon 2013 accessible android apps sharma_google

Google Confidential and Proprietary

Page 4: Droidcon 2013 accessible android apps sharma_google

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

Page 5: Droidcon 2013 accessible android apps sharma_google

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

Page 6: Droidcon 2013 accessible android apps sharma_google

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

Page 7: Droidcon 2013 accessible android apps sharma_google

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

Page 8: Droidcon 2013 accessible android apps sharma_google

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

Page 9: Droidcon 2013 accessible android apps sharma_google

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

Page 10: Droidcon 2013 accessible android apps sharma_google

Google Confidential and Proprietary

Features in Jelly Bean

Gestures

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

Page 11: Droidcon 2013 accessible android apps sharma_google

Google Confidential and Proprietary

(demo)

Page 12: Droidcon 2013 accessible android apps sharma_google

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

Page 13: Droidcon 2013 accessible android apps sharma_google

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

Page 14: Droidcon 2013 accessible android apps sharma_google

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

Page 15: Droidcon 2013 accessible android apps sharma_google

Google Confidential and Proprietary

(demo)

Page 16: Droidcon 2013 accessible android apps sharma_google

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

Page 17: Droidcon 2013 accessible android apps sharma_google

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" ... />

Page 18: Droidcon 2013 accessible android apps sharma_google

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

Page 19: Droidcon 2013 accessible android apps sharma_google

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>

Page 20: Droidcon 2013 accessible android apps sharma_google

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" .... />

Page 21: Droidcon 2013 accessible android apps sharma_google

Google Confidential and Proprietary

(demo)

Page 22: Droidcon 2013 accessible android apps sharma_google

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

Page 23: Droidcon 2013 accessible android apps sharma_google

Google Confidential and Proprietary

Logical grouping and ordering

Page 24: Droidcon 2013 accessible android apps sharma_google

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>

Page 25: Droidcon 2013 accessible android apps sharma_google

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, xlargeDensities: (low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi))

Page 26: Droidcon 2013 accessible android apps sharma_google

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

Page 27: Droidcon 2013 accessible android apps sharma_google

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

Page 28: Droidcon 2013 accessible android apps sharma_google

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

Page 29: Droidcon 2013 accessible android apps sharma_google

Google Confidential and Proprietary

Thanks and Questions?

Send feedback to:[email protected]