3. What is Accessibility.
Mostly used for people with special needs.
Hearing
Visual
Visual
motion
Google Confidential and Proprietary
4. Why make your apps accessible?
Reach!
Approximate number of people with special needs
Google Confidential and Proprietary
5. Why make your apps accessible?
Reach!
Approximate number of people with special needs
~1 billion users out of 7 billion
Google Confidential and Proprietary
6. Why make your apps accessible?
Empowering users!
We don’t use all the senses every time..
Google Confidential and Proprietary
7. How?
Feedback in many ways
sight (visual)
hear (audio)
touch (haptic)
taste
smell
No taste and smell feedback in apps yet !
Google Confidential and Proprietary
8. What framework provides
● User interactions and system events generate
AccessibilityEvents and send them to services
● AccessibilityServices like TalkBack and BrailleBack
respond to these events and provide feedback to the
user
Google Confidential and Proprietary
9. What framework provides - Accessibility Services
TalkBack (Froyo and above)
Provides spoken, auditory, and haptic feedback
Allows for random access and linear access of content
BrailleBack (Jelly Bean and above)
Allows users to access content on virtual braille display
Supports navigation and text input from a braille keyboard
Google Confidential and Proprietary
10. What framework provides
Donut (1.6) through Honeycomb (3.x)
● Spoken feedback through TextToSpeech APIs
● Power button ends call
● 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
11. 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
12. 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
13. Features in Jelly Bean
Gestures
● Services can respond to userdrawn gestures
○ Perform accessibility actions
○ Invoke global actions (Home,
Back, etc.)
● Deterministic access to
screen content
Google Confidential and Proprietary
14. Features in Jelly Bean
Updated in Kitkat
Gestures
● Quick shortcuts available in
Global Context Menu
Google Confidential and Proprietary
15. 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
16. Features in Kitkat
Global Captioning Preferences
● Available in Android 4.4
○
Open caption settings menu from
your application.
Settings.ACTION_CAPTIONING_SETTINGS
Google Confidential and Proprietary
17. Features in Kitkat
Global Captioning Preferences
● Use Videoview API in your
applications and use
addSubtitleSource() method.
● Captioning Manager API available.
Google Confidential and Proprietary
18. Chrome Browser
● Follow same accessibility
guidelines as desktop web
○
○
Provide alt text
Use ARIA
● Similar to ChromeVox used in
desktop Chrome
Google Confidential and Proprietary
19. Just Speak
Accessibility Service to perform major
tasks via speech command.
Beta version is released
More info: http://eyes-free.blogspot.com/
Google Confidential and Proprietary
21. What framework provides
Android applications and sensors
●
●
●
●
●
SMS, Video chats, Videos with Captions
Location aware, GPS, Maps, Places
Proximity
Motion, Accelerometer, Velocity tracker, Light sensor
Environmental and Position sensors
Sensor batching available to reduce power consumption
(Introduced in Kitkat).
Read the Android Developer Guide for Sensors
Google Confidential and Proprietary
22. What framework provides
Google Play
● Paid apps in many Countries
● DCB
Developer Console
● Countries and currencies
● Statistics
Google Confidential and Proprietary
23. What framework provides
Developer Console
● Auto Translate feature
● Purchase professional
translations or rely on autotranslate.
Global accessibility
● i18n and l10n
● Read the Android Developer
Guide for Localization
Google Confidential and Proprietary
24. 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
26. 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
28. Code changes for Accessibility
Supporting D-Pad navigation
● Prior to Android 4.0, app needs to be accessible via DPad
○ 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
30. 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
32. 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
35. Custom-drawn views
● Use or extend existing classes and interfaces when
possible
● Android 4.1 added support for AccessibilityNodeProviders
Google Confidential and Proprietary
36. Custom-drawn views
Use ExploreByTouchHelper.
Wraps AccessibilityNodeProviderCompat.
You need to implement 5 Abstract methods.
Detail here: http://developer.android.
com/reference/android/support/v4/widget/ExploreByTouch
Helper.html
Google Confidential and Proprietary
37. Custom-drawn views
Delegate handling of certain events
Implement support for Explore by Touch
Expose information to accessibility services
Provide support for user interaction
Test, ensure feature parity
More details in this I/O talk:
https://developers.google.com/events/io/sessions/258451203
Google Confidential and Proprietary
38. Testing and Debugging for Accessibility
For all Android apps
○
○
○
○
Create checklist of what should be tested for
Accessibility
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
39. Testing and Debugging for
Accessibility
For all Android apps
● Enable verbose logging for
Accessibility in: Accessibility
> TalkBack > Settings >
Developer settings
● Android Lint tool
Google Confidential and Proprietary
40. 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
Add captions to videos
● Fix custom components
○ Use ExploreByTouchHelper
● Test and Fix
Google Confidential and Proprietary
41. Summary
Good to have:
● Augment audio-only prompts
○ Visual cues
○ Haptic feedback
● Evaluate sensors
● Follow UI guidelines
● Reach globally
Read the Android Developer Guide for Accessibility
Google Confidential and Proprietary
42. Thanks and Questions?
Send feedback to:
soniash@google.com
soniash@gmail.com
G+ soniash
@sonia1sh
Google Confidential and Proprietary