Top Banner
Android Accessibility The Missing Manual Ted Drake, Intuit Accessibility
27

Android Accessibility - The missing manual

Apr 15, 2017

Download

Mobile

Ted Drake
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android Accessibility - The missing manual

Android AccessibilityThe Missing Manual

Ted Drake, Intuit Accessibility

Page 2: Android Accessibility - The missing manual

Testing

Page 3: Android Accessibility - The missing manual

Android Lint

Page 4: Android Accessibility - The missing manual

AccessibilityChecks

• AccessibilityChecks released at Google IO 2015

• Open Source tests for Espresso and Robolectric

• Soon: Android app that lets you test on a device

• Goal: Adopt AccessibilityChecks for Appium

Page 5: Android Accessibility - The missing manual

TalkBack

Page 6: Android Accessibility - The missing manual

Turn on TalkBack

Page 7: Android Accessibility - The missing manual

Gestures

Page 8: Android Accessibility - The missing manual

Two Fingered Gestures

Page 9: Android Accessibility - The missing manual

Android Accessibility Shortcut

Page 10: Android Accessibility - The missing manual

Programming

Page 11: Android Accessibility - The missing manual

accessibilityLiveRegion

• Based on the Live Region experience in HTML + ARIA

• Content is announced when it changes or appears on screen

• android:accessibilityLiveRegion =“polite”

Page 12: Android Accessibility - The missing manual
Page 13: Android Accessibility - The missing manual

AccessibilityAction

• Swipes and other hard to discover actions

• Actions are activated from the Local Context Menu

• Provide hints for actions

Page 14: Android Accessibility - The missing manual

Create AccessibilityAction/** * @param actionId The id for this action. This should either be one of * the standard actions or a specific action for your app. In that case it * is required to use a resource identifier. */public AccessibilityAction(int id, CharSequence label) new AccessibilityAction(R.id.dismiss, getString(R.string.dismiss));new AccessibilityAction(ACTION_CLICK, getString(R.string.play_song)); !// Constants for all the standard actions with default label: AccessibilityAction.ACTION_CLICK

Page 15: Android Accessibility - The missing manual

Handling a Custom ActioneventView.setAccessibilityDelegate(new AccessibilityDelegate { @Override public onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(host, info); info.addAction(new AccessibilityAction(R.id.dismiss,}@OverridegetString(R.string.dismiss))); public boolean performAccessibilityAction(View host, int action, Bundle args) { if (action == R.id.dismiss) {} // Logic for action }});

Page 16: Android Accessibility - The missing manual

android:importantForAccessibility

noHideDescendants

noHideDescendants

noHideDescendants

auto

Page 17: Android Accessibility - The missing manual

ListPopupWindow

setModal(true)

Page 18: Android Accessibility - The missing manual

Forms

Page 19: Android Accessibility - The missing manual

Form Labels

Which is correct? • android:hint

• android:labelFor

• android:contentDescription

Page 20: Android Accessibility - The missing manual
Page 21: Android Accessibility - The missing manual

<TextView

android:layout_height="match_parent"

android:labelFor="@+id/edit_item_name"

android:text=“Invoice amount"/>

<EditText

android:id="@+id/edit_item_name"

android:layout_height="wrap_content"

android:hint=“Invoice Amount"/>

Page 22: Android Accessibility - The missing manual

android:hint

Page 23: Android Accessibility - The missing manual

android:hint

• This create a placeholder text string within an input

• This was the preferred method and is a hack

• The hint is removed when a user adds a value to the input

• Still a valid method of adding a label to an input

Page 24: Android Accessibility - The missing manual

contentDescription

• Invisible description for TalkBack

• Should not be used directly on an input

• You can use it on an input’s container and combine with labelFor

Page 25: Android Accessibility - The missing manual

textinputlayout<textinputlayout

android:labelfor="@id/signupemail"

android:contentdescription="Email"

android:accessibilityliveregion="polite">

<edittext

android:id="@id/signupemail"

android:hint="Email"

android:seterror="Create a valid email address"…/>

</textinputlayout>

Page 26: Android Accessibility - The missing manual

Checking for TalkBackAccessibilityManager am = (AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE);

boolean isAccessibilityEnabled = am.isEnabled();

boolean isExploreByTouchEnabled = am.isTouchExplorationEnabled();