Droidcon 2013 accessible android apps sharma_google


Published on

Published in: Business, Technology
  • 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

No notes for slide

Droidcon 2013 accessible android apps sharma_google

  1. 1. Designing AccessibleAndroid ApplicationsApril 9, 2013 Google Confidential and Proprietary
  2. 2. Agenda● What is accessibility?● What features are available?● How do you make your app accessible?● Testing and Debugging Google Confidential and Proprietary
  3. 3. Google Confidential and Proprietary
  4. 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. 5. What framework providesDonut (1.6) through Honeycomb (3.x)● Spoken feedback through TextToSpeech APIs● Modify your devices display and sound options ○ Large text ○ Change speed at which text is spoken ○ Disable screen rotationIce Cream Sandwich (4.0) ● Touch exploration for devices without D-Pad ● Services can inspect view hierarchy Google Confidential and Proprietary
  6. 6. What framework providesJellyBean (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. 7. What framework providesJellyBean (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. 8. Features in Jelly BeanGestures● 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. 9. Features in Jelly BeanMagnification● Available in Android 4.2● Multiple zoom modes ○ Triple-tap to toggle ○ Triple-tap and hold for momentary zoom Google Confidential and Proprietary
  10. 10. Features in Jelly BeanGestures● Quick shortcuts available in Global Context Menu ○ Pause feedback ○ Repeat/spell last utterance ○ TalkBack Settings Google Confidential and Proprietary
  11. 11. (demo) Google Confidential and Proprietary
  12. 12. What framework providesAndroid 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 sensorsRead the Android Developer Guide for Sensors Google Confidential and Proprietary
  13. 13. What framework providesGoogle Play● Paid apps in many Countries● DCBDeveloper Console● Countries and currencies● Auto Translate feature● StatisticsGlobal accessibility● i18n and l10nRead the Android Developer Guide for Localization Google Confidential and Proprietary
  14. 14. What framework providesDesign recommendations● Navigation should be easy● Use recommended touch target sizes● Alternatives to time-out controls● Label UI elements meaningfully ○ Minimize Chatter ○ Provide feedbackRead the Android Design Guide for Accessibility Google Confidential and Proprietary
  15. 15. (demo) Google Confidential and Proprietary
  16. 16. Code changes for AccessibilityLabeling 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 Views description ○ Dont override getContentDescription()● EditTexts should use android:hint Google Confidential and Proprietary
  17. 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. 18. Code changes for AccessibilitySupporting 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. 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. 20. Code changes for AccessibilitySupporting 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. 21. (demo) Google Confidential and Proprietary
  22. 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. 23. Logical grouping and ordering Google Confidential and Proprietary
  24. 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. 25. Testing and Debugging for AccessibilityFor 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. 26. Testing and Debugging forAccessibilityFor all Android apps● Enable Accessibility features ○ Turn on TalkBack logging in Accessibility > TalkBack > Settings > Developer settings● Android Lint tool Google Confidential and Proprietary
  27. 27. SummaryMust 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. 28. SummaryGood to have:● Augment audio-only prompts ○ Visual cues ○ Haptic feedback● Evaluate sensors● Add captions to videos● Follow UI guidelines● Reach globallyRead the Android Developer Guide for Accessibility Google Confidential and Proprietary
  29. 29. Thanks and Questions? Send feedback to: soniash@google.com Google Confidential and Proprietary
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.