Android accessibility till_kitkat_nov2013_andevcon

Uploaded on

Slides for my talk in Andevcon 2013 which has information about Accessibility features till Kitkat version.

Slides for my talk in Andevcon 2013 which has information about Accessibility features till Kitkat version.

More in: Technology , Design
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Designing Accessible Android Applications (information provided till Kitkat) Nov, 2013 Sample Project Google Confidential and Proprietary
  • 2. Agenda WHAT WHY HOW is Accessibility? do we care? to implement it? is provided in Framework? to test it? Google Confidential and Proprietary
  • 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: Google Confidential and Proprietary
  • 20. (demo) 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
  • 25. (demo) 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
  • 27. <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
  • 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
  • 29. <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
  • 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
  • 31. (demo) 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
  • 33. Logical grouping and ordering Google Confidential and Proprietary
  • 34. <LinearLayout> …. <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" ... /> </FolderIcon> …. </LinearLayout> 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: 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: 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: G+ soniash @sonia1sh Google Confidential and Proprietary