42
Google Confidential and Proprietary Designing Accessible Android Applications (information provided till Kitkat) Nov, 2013 Sample Project http://goo.gl/m3LUx

Android accessibility till_kitkat_nov2013_andevcon

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Designing AccessibleAndroid Applications(information provided till Kitkat)

Nov, 2013

Sample Projecthttp://goo.gl/m3LUx

Page 2: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Agenda

WHAT WHY HOW

is Accessibility? do we care? to implement it?

is provided in Framework?

to test it?

Page 3: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

What is Accessibility. Mostly used for people with special needs.

Visual

motion

Hearing

Visual

Page 4: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Why make your apps accessible?

Reach!

Approximate number of people with special needs

Page 5: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Why make your apps accessible?

Reach!

Approximate number of people with special needs

~1 billion users out of 7 billion

Page 6: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Why make your apps accessible?

Empowering users!We don’t use all the senses every time..

Page 7: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

How?

Feedback in many ways

sight (visual)hear (audio)touch (haptic) tastesmell

No taste and smell feedback in apps yet !

Page 8: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

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

Page 9: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

What framework provides - Accessibility Services

TalkBack (Froyo and above)Provides spoken, auditory, and haptic feedbackAllows for random access and linear access of content

BrailleBack (Jelly Bean and above)Allows users to access content on virtual braille displaySupports navigation and text input from a braille keyboard

Page 10: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

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

Page 11: Android accessibility till_kitkat_nov2013_andevcon

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 12: Android accessibility till_kitkat_nov2013_andevcon

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 13: Android accessibility till_kitkat_nov2013_andevcon

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 14: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Features in Jelly BeanUpdated in Kitkat

Gestures

● Quick shortcuts available in Global Context Menu

Page 15: Android accessibility till_kitkat_nov2013_andevcon

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 16: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Features in Kitkat

Global Captioning Preferences

● Available in Android 4.4○ Open caption settings menu from

your application.

Settings.ACTION_CAPTIONING_SETTINGS

Page 17: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Features in Kitkat

Global Captioning Preferences

● Use Videoview API in your applications and use addSubtitleSource() method.

● Captioning Manager API available.

Page 18: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Chrome Browser

● Follow same accessibility guidelines as desktop web○ Provide alt text○ Use ARIA

● Similar to ChromeVox used in desktop Chrome

Page 19: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Just Speak

Accessibility Service to perform major tasks via speech command.

Beta version is released

More info: http://eyes-free.blogspot.com/

Page 20: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

(demo)

Page 21: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

What framework providesAndroid 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

Page 22: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

What framework provides

Google Play● Paid apps in many Countries● DCB

Developer Console● Countries and currencies ● Statistics

Page 23: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

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

Page 24: Android accessibility till_kitkat_nov2013_andevcon

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 25: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

(demo)

Page 26: Android accessibility till_kitkat_nov2013_andevcon

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 27: Android accessibility till_kitkat_nov2013_andevcon

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 28: Android accessibility till_kitkat_nov2013_andevcon

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 29: Android accessibility till_kitkat_nov2013_andevcon

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 30: Android accessibility till_kitkat_nov2013_andevcon

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 31: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

(demo)

Page 32: Android accessibility till_kitkat_nov2013_andevcon

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 33: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Logical grouping and ordering

Page 34: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

<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>

Page 35: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Custom-drawn views

● Use or extend existing classes and interfaces when possible

● Android 4.1 added support for AccessibilityNodeProviders

Page 36: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

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/ExploreByTouchHelper.html

Page 37: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

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

Page 38: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

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

Page 39: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Testing and Debugging for Accessibility

For all Android apps● Enable verbose logging for

Accessibility in: Accessibility > TalkBack > Settings > Developer settings

● Android Lint tool

Page 40: Android accessibility till_kitkat_nov2013_andevcon

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○ Add captions to videos

● Fix custom components○ Use ExploreByTouchHelper

● Test and Fix

Page 41: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

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

Page 42: Android accessibility till_kitkat_nov2013_andevcon

Google Confidential and Proprietary

Thanks and Questions?Send feedback to:[email protected]@gmail.com G+ soniash@sonia1sh