SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Android 
Accessibility 
Bangalore Accessibility Week 
October 6-10, 2014 
Ted Drake, Intuit Accessibility 
This presentation borrows heavily from the great presentations given by the Google Accessibility team at Google iO: https://drive.google.com/ 
folderview?id=0B8z0EqKVnjoZbEtZNk05LWhsVHM&usp=sharing 
Android Accessibility Videos: https://www.youtube.com/playlist?list=PLQbD187567ZYe2HQ24sQxB6jhnWoR_JUJ 
! 
photo: http://www.pinterest.com/pin/559501953680642594/
Users move accessibility focus by interacting with 
the touch screen using explore by touch and 
accessibility gestures. 
! 
AccessibilityServices interpret exploration 
and gestures to facilitate different types of 
navigation 
AccessibilityService Documentation: http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html 
An accessibility service runs in the background and receives callbacks by the system when AccessibilityEvents are fired. Such events denote some state 
transition in the user interface, for example, the focus has changed, a button has been clicked, etc. Such a service can optionally request the capability for 
querying the content of the active window. Development of an accessibility service requires extending this class and implementing its abstract methods.
Meet Talk Back 
TalkBack is preinstalled on most Android devices, but is also available on 
the Play Store1. 
! 
TalkBack is enabled from Settings > Accessibility > TalkBack. 
! 
Enabling TalkBack changes the interaction model of the device. 
• Explore with a single finger. 
• Double-tap to activate the focused item. 
• Use two-finger drag to scroll lists. 
Talkback is pre-installed, but can also be found in the play store: https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback 
TalkBack support: https://support.google.com/talkback/ 
!
Turn on TalkBack 
This video shows how to enable TalkBack and how to use it as a developer. 
It’s also available on YouTube https://www.youtube.com/watch?v=82ivNZI6bIA
Common Problems 
• Content Labeling 
• Grouping and Ordering 
• Font Scaling 
• Web Views and Hybrid Apps
• All interactive elements must have a content description: 
• 
android:contentDescription 
• 
View#setContentDescription 
• Decorative images: 
• android:contentDescription=“@null” 
• For EditText 
• android:hint 
• labelFor 
• Keep labels short and clear. 
Send Email 
You spend a lot of time making your screens look great, but are you providing the same experience to TalkBack users? contentDescription allows you to 
own the experience. 
Setting the contentDescription to null will tell talkback to ignore the image. 
Use android:hint on form inputs, as the contentDescription will inherit the value of the input.
<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"/> 
This example shows labelFor and android:hint being used on an input. The hint is not announced when the edit text has a value. 
More information: https://www.ssbbartgroup.com/blog/2014/03/19/android-accessibility-properties-and-talkback/
Grouping and Ordering 
• TalkBack uses view hierarchy order and on-screen 
positioning to 
determine grouping 
and ordering. 
• Use ViewGroup 
1 2 
3 4 
5 6 
containers to associate related information. Set 
android:focusable=“true” 
• The order of items displayed may be controlled. 
Use android:contentDescription or 
View#setContentDescription 
http://developer.android.com/reference/android/view/ViewGroup.html
Font Sizing 
• Android supports large font substitution for low-vision 
users. 
• Always use scale-independent pixels(sp). 
• Avoid density-independent pixels (dip or dp) 
• This is also important for i18n
WebViews 
• Supported in Android 3.1+ 
• Enable JavaScript within WebView 
• Garbage In, Garbage Out! Make sure your 
HTML is accessible. 
http://developer.android.com/reference/android/webkit/WebView.html 
WebViews are not accessible by default, the user must activate this because it uses a JavaScript driven ChromeVox 
! 
• Turning on Accessibility mode, including 'Explore by Touch' in 4.0+. 
• Enabling 'Enhanced Web Accessibility', or, on older devices, 'Inject Web Scripts'.
Custom Views 
Favorite Actor 
Dev Anand 
Om Parkash 
Aamir Khan 
This pie chart could be considered a custom view. TalkBack needs to tell the user about positioning, color, text. It also need to describe interactions, such 
as gestures, taps, and states.
Virtual View Hierarchy 
• Pie Chart 
• Om Parkash 30% 
• clickable 
• checkable 
• Dev Anand 45% 
• clickable 
• checkable 
• Aamir Khan 25% 
• clickable 
• checkable 
Favorite Actor 
Dev Anand 
Om Parkash 
Aamir Khan 
What are the components? What are their states?
What TalkBack Sees 
• ViewDecor 
• Action Bar 
• Pie Chart 
• LinearLayout 
• My Favorite Bars 
• Pie Chart 
• Om Parkash 30% 
• Dev Anand 45% 
• Aamir Khan 25% 
Favorite Actor 
Dev Anand 
Om Parkash 
Aamir Khan
Custom Views 
• Delegate accessibility support 
• Map logical items to virtual views 
• Expose information about views 
• Formalize interaction model
setAccessibilityDelegate 
ViewCompat.setAccessibilityDelegate(this, 
mAccessibilityHelper); 
} 
@Override 
public boolean dispatchHoverEvent(MotionEvent 
event) { 
if (mAccessibilityHelper != null && 
mAccessibilityHelper.dispatchHoverEvent(event)) { 
return true; 
} 
return super.dispatchHoverEvent(event); 
} 
We want to check for mAccessibilityHelper support 
http://developer.android.com/reference/android/view/View.AccessibilityDelegate.html
Map Logical to Virtual 
• Reuse your existing code. 
• The pie chart already: 
• Is drawn on the screen 
• Includes touch events 
• Uniquely identified
@Override 
protected int getVirtualViewAt(float x, float y) { 
Wedge wedge = getWedgeAt(x, y); 
if (wedge != null) 
return wedge.getId(); 
return ExploreByTouchHelper.INVALID_ID; 
} 
@Override 
protected void getVisibleVirtualViews(List<Integer> 
virtualViewIds) { 
for (Wedge wedge : mWedges) { 
virtualViewIds.add(wedge.getId()); 
} 
}
Expose Information 
• Reuse existing code 
• Position 
• Color 
• Label 
• Relative Size 
• Click Handling 
• Checked Status
@Override 
protected void onPopulateEventForVirtualView( 
int virtualViewId, AccessibilityEvent event) { 
Wedge wedge = getWedgeForId(virtualViewId); 
event.setContentDescription(wedge.getLabel() + ": " + 
wedge.getPercent() + "%"); 
} 
@Override 
protected void onPopulateNodeForVirtualView( 
int virtualViewId, AccessibilityNodeInfoCompat node) { 
Wedge wedge = getWedgeForId(virtualViewId); 
node.setContentDescription(wedge.getLabel() + ": " + 
wedge.getPercent() + "%"); 
node.setBoundsInParent(wedge.getLabelBounds()); 
...
Formalize Interactions 
! 
node.setCheckable(true); 
node.setChecked(wedge.isChecked()); 
node.addAction(AccessibilityNodeInfoCompat.ACTION_CLICK); 
} 
@Override 
protected boolean onPerformActionForVirtualView( 
int virtualViewId, int action, Bundle arguments) { 
if (action == AccessibilityNodeInfoCompat.ACTION_CLICK) { 
return onWedgeClicked(getWedgeForId(virtualViewId)); 
} 
Assign your pre-existing actions to the accessibility node 
http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityNodeInfoCompat.html 
!
Android L 
• Custom AccessibilityAction 
• Live Regions 
• Collections 
• Window API 
Documentation is sparse for these new features. 
Presentation from Google IO 14 https://drive.google.com/folderview?id=0B8z0EqKVnjoZbEtZNk05LWhsVHM&usp=sharing 
https://developer.android.com/preview/api-overview.html#TestingA11y 
!
AccessibilityAction 
• Swipes and other hard to discover actions 
• Actions are activated from the Local Context 
Menu 
• Provide hints for actions 
Documentation for this has not yet been released.
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
Handling a Custom Action 
eventView.setAccessibilityDelegate(new AccessibilityDelegate { 
@Override 
public onInitializeAccessibilityNodeInfo(View host, 
AccessibilityNodeInfo info) { 
super.onInitializeAccessibilityNodeInfo(host, info); 
info.addAction(new AccessibilityAction(R.id.dismiss, 
} 
@Override 
getString(R.string.dismiss))); 
public boolean performAccessibilityAction(View host, int action, 
Bundle args) { 
if (action == R.id.dismiss) {} // Logic for action 
} 
});
Live Regions 
• Based on the Live Region experience in HTML + 
ARIA 
• Content is announced when it changes or 
appears on screen 
• Look for 
TYPE_WINDOW_CONTENT_CHANGED 
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions 
Documentation on live regions not available yet. 
TYPE_WINDOW_CONTENT_CHANGED: 
http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html
Collections 
• Similar to a data table in HTML 
• Supports int, float, and Percent 
• Query info about table and elements 
• AccessibilityNodeInfo.CollectionInfo 
http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.CollectionInfo.html
Window API 
• Introspect all interactive windows: autocomplete, 
drawers… 
• AccessibilityFocus can move from one window to another 
• Retrieve information about properties of windows on the 
screen that sighted users can interact with. 
• android.accessibilityservice.AccessibilityServic 
e.getWindows(): Retrieve a list of objects representing 
windows information 
• TYPE_WINDOWS_CHANGED: AccessibilityEvent to see events 
new features in
Android Testing 
• Use Android Lint 
• Use TalkBack’s Read From Top to make sure 
everything is announced on the screen 
• Use the On-Screen Overlay to see what is being 
spoken 
• Martini: Intuit’s UI Test Service 
Using android lint: https://www.youtube.com/watch?v=OtwCe-YlD5k&list=PLQbD187567ZYe2HQ24sQxB6jhnWoR_JUJ&index=8 
Touch exploration help: https://support.google.com/accessibility/android/answer/6006598?hl=en 
Martini: https://wiki.intuit.com/display/CTOTools/UI+Test+Service
Testing 
• Use Android Lint 
• Use TalkBack’s Read From Top to make sure 
everything is announced on the screen 
• Use the On-Screen Overlay to see what is being 
spoken 
Using android lint: https://www.youtube.com/watch?v=OtwCe-YlD5k&list=PLQbD187567ZYe2HQ24sQxB6jhnWoR_JUJ&index=8 
Touch exploration help: https://support.google.com/accessibility/android/answer/6006598?hl=en 
!

Weitere ähnliche Inhalte

Was ist angesagt?

Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android AppsGil Irizarry
 
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Gil Irizarry
 
What's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet HaaseWhat's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet HaaseParis Android User Group
 
Day 4: Activity lifecycle
Day 4: Activity lifecycleDay 4: Activity lifecycle
Day 4: Activity lifecycleAhsanul Karim
 
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesDesign Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesMichael Galpin
 
04 user interfaces
04 user interfaces04 user interfaces
04 user interfacesC.o. Nieto
 
iOS app dev Training - Session1
iOS app dev Training - Session1iOS app dev Training - Session1
iOS app dev Training - Session1Hussain Behestee
 
Being Epic: Best Practices for Android Development
Being Epic: Best Practices for Android DevelopmentBeing Epic: Best Practices for Android Development
Being Epic: Best Practices for Android DevelopmentReto Meier
 
Adopting 3D Touch in your apps
Adopting 3D Touch in your appsAdopting 3D Touch in your apps
Adopting 3D Touch in your appsJuan C Catalan
 
Mobile Application Development with JUCE and Native API’s
Mobile Application Development with JUCE and Native API’sMobile Application Development with JUCE and Native API’s
Mobile Application Development with JUCE and Native API’sAdam Wilson
 
Android N multi window
Android N multi windowAndroid N multi window
Android N multi windowYu-Wei Chuang
 
Write once, ship multiple times
Write once, ship multiple timesWrite once, ship multiple times
Write once, ship multiple timesŽeljko Plesac
 
Android Screen Containers & Layouts
Android Screen Containers & LayoutsAndroid Screen Containers & Layouts
Android Screen Containers & LayoutsVijay Rastogi
 
View groups containers
View groups containersView groups containers
View groups containersMani Selvaraj
 
Introduction to Android Wear
Introduction to Android WearIntroduction to Android Wear
Introduction to Android WearPeter Friese
 
android layouts
android layoutsandroid layouts
android layoutsDeepa Rani
 
Android TV: Building apps with Google’s Leanback Library
Android TV: Building apps with  Google’s Leanback LibraryAndroid TV: Building apps with  Google’s Leanback Library
Android TV: Building apps with Google’s Leanback LibraryJoe Birch
 

Was ist angesagt? (20)

Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android Apps
 
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
 
What's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet HaaseWhat's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet Haase
 
Android 3
Android 3Android 3
Android 3
 
Day 4: Activity lifecycle
Day 4: Activity lifecycleDay 4: Activity lifecycle
Day 4: Activity lifecycle
 
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesDesign Patterns for Tablets and Smartphones
Design Patterns for Tablets and Smartphones
 
Android Basic Components
Android Basic ComponentsAndroid Basic Components
Android Basic Components
 
04 user interfaces
04 user interfaces04 user interfaces
04 user interfaces
 
iOS app dev Training - Session1
iOS app dev Training - Session1iOS app dev Training - Session1
iOS app dev Training - Session1
 
Being Epic: Best Practices for Android Development
Being Epic: Best Practices for Android DevelopmentBeing Epic: Best Practices for Android Development
Being Epic: Best Practices for Android Development
 
Android UI Fundamentals part 1
Android UI Fundamentals part 1Android UI Fundamentals part 1
Android UI Fundamentals part 1
 
Adopting 3D Touch in your apps
Adopting 3D Touch in your appsAdopting 3D Touch in your apps
Adopting 3D Touch in your apps
 
Mobile Application Development with JUCE and Native API’s
Mobile Application Development with JUCE and Native API’sMobile Application Development with JUCE and Native API’s
Mobile Application Development with JUCE and Native API’s
 
Android N multi window
Android N multi windowAndroid N multi window
Android N multi window
 
Write once, ship multiple times
Write once, ship multiple timesWrite once, ship multiple times
Write once, ship multiple times
 
Android Screen Containers & Layouts
Android Screen Containers & LayoutsAndroid Screen Containers & Layouts
Android Screen Containers & Layouts
 
View groups containers
View groups containersView groups containers
View groups containers
 
Introduction to Android Wear
Introduction to Android WearIntroduction to Android Wear
Introduction to Android Wear
 
android layouts
android layoutsandroid layouts
android layouts
 
Android TV: Building apps with Google’s Leanback Library
Android TV: Building apps with  Google’s Leanback LibraryAndroid TV: Building apps with  Google’s Leanback Library
Android TV: Building apps with Google’s Leanback Library
 

Andere mochten auch

안드로이드 모바일 애플리케이션 접근성 점검 매뉴얼 최종
안드로이드 모바일 애플리케이션 접근성 점검 매뉴얼 최종안드로이드 모바일 애플리케이션 접근성 점검 매뉴얼 최종
안드로이드 모바일 애플리케이션 접근성 점검 매뉴얼 최종Seunghyeon Kim
 
學員招生海報 99學年
學員招生海報 99學年學員招生海報 99學年
學員招生海報 99學年uchiron
 
Carta-Programa - Chapa 1 - Jornalistas SP
Carta-Programa - Chapa 1 - Jornalistas SPCarta-Programa - Chapa 1 - Jornalistas SP
Carta-Programa - Chapa 1 - Jornalistas SPSylvio Micelli
 
05 2014-varnish
05 2014-varnish05 2014-varnish
05 2014-varnishthomaslc
 
Erfolgreiche Neukundenakquise in Preissuchmaschinen und Produktportalen
Erfolgreiche Neukundenakquise in Preissuchmaschinen und ProduktportalenErfolgreiche Neukundenakquise in Preissuchmaschinen und Produktportalen
Erfolgreiche Neukundenakquise in Preissuchmaschinen und ProduktportalenSoQuero GmbH
 
Centre contact client virtuel
Centre contact client virtuel Centre contact client virtuel
Centre contact client virtuel Gérard Saïzonou
 
Perspectiva Económica Global - Mayo 2016 - Franklin Templeton Investments
Perspectiva Económica Global - Mayo 2016 - Franklin Templeton InvestmentsPerspectiva Económica Global - Mayo 2016 - Franklin Templeton Investments
Perspectiva Económica Global - Mayo 2016 - Franklin Templeton InvestmentsCarlos Francisco Gómez Guzmán
 
Learnings for Accessibility for iOS Platform
Learnings for Accessibility for iOS PlatformLearnings for Accessibility for iOS Platform
Learnings for Accessibility for iOS PlatformTasneem Sayeed
 
Focus Management and Accessibility on iOS, Android, and HTML5
Focus Management and Accessibility on iOS, Android, and HTML5Focus Management and Accessibility on iOS, Android, and HTML5
Focus Management and Accessibility on iOS, Android, and HTML5Ted Drake
 
2017 CSUN Color Contrast
2017 CSUN Color Contrast2017 CSUN Color Contrast
2017 CSUN Color ContrastCrystal Baker
 
Mystery Meat 2.0 – Making hidden mobile interactions accessible
Mystery Meat 2.0 – Making hidden mobile interactions accessibleMystery Meat 2.0 – Making hidden mobile interactions accessible
Mystery Meat 2.0 – Making hidden mobile interactions accessibleTed Drake
 
Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...
Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...
Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...Ted Drake
 
Introduction to semiconductor materials
Introduction to semiconductor materialsIntroduction to semiconductor materials
Introduction to semiconductor materialsDr. Ghanshyam Singh
 
Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017
Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017
Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017Bill Tyler
 
Hotspot 2.0 - Concept and Challenges
Hotspot 2.0 - Concept and ChallengesHotspot 2.0 - Concept and Challenges
Hotspot 2.0 - Concept and ChallengesDr. Mazlan Abbas
 
Lte security overview
Lte security overviewLte security overview
Lte security overviewaliirfan04
 
Presentation on mobile phones
Presentation on mobile phonesPresentation on mobile phones
Presentation on mobile phonessirtwinkles
 
Sperm notes equine_01_2012_es - manejo de equipos
Sperm notes equine_01_2012_es - manejo de equiposSperm notes equine_01_2012_es - manejo de equipos
Sperm notes equine_01_2012_es - manejo de equiposredaccionpl
 

Andere mochten auch (18)

안드로이드 모바일 애플리케이션 접근성 점검 매뉴얼 최종
안드로이드 모바일 애플리케이션 접근성 점검 매뉴얼 최종안드로이드 모바일 애플리케이션 접근성 점검 매뉴얼 최종
안드로이드 모바일 애플리케이션 접근성 점검 매뉴얼 최종
 
學員招生海報 99學年
學員招生海報 99學年學員招生海報 99學年
學員招生海報 99學年
 
Carta-Programa - Chapa 1 - Jornalistas SP
Carta-Programa - Chapa 1 - Jornalistas SPCarta-Programa - Chapa 1 - Jornalistas SP
Carta-Programa - Chapa 1 - Jornalistas SP
 
05 2014-varnish
05 2014-varnish05 2014-varnish
05 2014-varnish
 
Erfolgreiche Neukundenakquise in Preissuchmaschinen und Produktportalen
Erfolgreiche Neukundenakquise in Preissuchmaschinen und ProduktportalenErfolgreiche Neukundenakquise in Preissuchmaschinen und Produktportalen
Erfolgreiche Neukundenakquise in Preissuchmaschinen und Produktportalen
 
Centre contact client virtuel
Centre contact client virtuel Centre contact client virtuel
Centre contact client virtuel
 
Perspectiva Económica Global - Mayo 2016 - Franklin Templeton Investments
Perspectiva Económica Global - Mayo 2016 - Franklin Templeton InvestmentsPerspectiva Económica Global - Mayo 2016 - Franklin Templeton Investments
Perspectiva Económica Global - Mayo 2016 - Franklin Templeton Investments
 
Learnings for Accessibility for iOS Platform
Learnings for Accessibility for iOS PlatformLearnings for Accessibility for iOS Platform
Learnings for Accessibility for iOS Platform
 
Focus Management and Accessibility on iOS, Android, and HTML5
Focus Management and Accessibility on iOS, Android, and HTML5Focus Management and Accessibility on iOS, Android, and HTML5
Focus Management and Accessibility on iOS, Android, and HTML5
 
2017 CSUN Color Contrast
2017 CSUN Color Contrast2017 CSUN Color Contrast
2017 CSUN Color Contrast
 
Mystery Meat 2.0 – Making hidden mobile interactions accessible
Mystery Meat 2.0 – Making hidden mobile interactions accessibleMystery Meat 2.0 – Making hidden mobile interactions accessible
Mystery Meat 2.0 – Making hidden mobile interactions accessible
 
Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...
Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...
Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...
 
Introduction to semiconductor materials
Introduction to semiconductor materialsIntroduction to semiconductor materials
Introduction to semiconductor materials
 
Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017
Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017
Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017
 
Hotspot 2.0 - Concept and Challenges
Hotspot 2.0 - Concept and ChallengesHotspot 2.0 - Concept and Challenges
Hotspot 2.0 - Concept and Challenges
 
Lte security overview
Lte security overviewLte security overview
Lte security overview
 
Presentation on mobile phones
Presentation on mobile phonesPresentation on mobile phones
Presentation on mobile phones
 
Sperm notes equine_01_2012_es - manejo de equipos
Sperm notes equine_01_2012_es - manejo de equiposSperm notes equine_01_2012_es - manejo de equipos
Sperm notes equine_01_2012_es - manejo de equipos
 

Ähnlich wie Android accessibility for developers and QA

Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Mahmoud Hamed Mahmoud
 
Android Workshop
Android WorkshopAndroid Workshop
Android WorkshopJunda Ong
 
Developing AIR for Mobile with Flash Professional CS5.5
Developing AIR for Mobile with Flash Professional CS5.5Developing AIR for Mobile with Flash Professional CS5.5
Developing AIR for Mobile with Flash Professional CS5.5Chris Griffith
 
GDG GeorgeTown Devfest 2014 Presentation: Android Wear: A Developer's Perspec...
GDG GeorgeTown Devfest 2014 Presentation: Android Wear: A Developer's Perspec...GDG GeorgeTown Devfest 2014 Presentation: Android Wear: A Developer's Perspec...
GDG GeorgeTown Devfest 2014 Presentation: Android Wear: A Developer's Perspec...mharkus
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basicsAnton Narusberg
 
The Hitchhicker’s Guide to Windows Azure Mobile Services | FalafelCON 2014
The Hitchhicker’s Guide to Windows Azure Mobile Services | FalafelCON 2014The Hitchhicker’s Guide to Windows Azure Mobile Services | FalafelCON 2014
The Hitchhicker’s Guide to Windows Azure Mobile Services | FalafelCON 2014FalafelSoftware
 
Selendroid - Selenium for Android
Selendroid - Selenium for AndroidSelendroid - Selenium for Android
Selendroid - Selenium for AndroidDominik Dary
 
Fragments: Why, How, What For?
Fragments: Why, How, What For?Fragments: Why, How, What For?
Fragments: Why, How, What For?Brenda Cook
 
Implementing cast in android
Implementing cast in androidImplementing cast in android
Implementing cast in androidAngelo Rüggeberg
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)Christian Rokitta
 
What's new in Android P @ I/O Extended Bangkok 2018
What's new in Android P @ I/O Extended Bangkok 2018What's new in Android P @ I/O Extended Bangkok 2018
What's new in Android P @ I/O Extended Bangkok 2018Somkiat Khitwongwattana
 
HTML5 for Rich User Experience
HTML5 for Rich User ExperienceHTML5 for Rich User Experience
HTML5 for Rich User ExperienceMahbubur Rahman
 
Getting Started With Material Design
Getting Started With Material DesignGetting Started With Material Design
Getting Started With Material DesignYasin Yildirim
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)Bramus Van Damme
 
Google I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsGoogle I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsRomain Guy
 
OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial IntroPamela Fox
 

Ähnlich wie Android accessibility for developers and QA (20)

Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Compose In Practice
Compose In PracticeCompose In Practice
Compose In Practice
 
Android Workshop
Android WorkshopAndroid Workshop
Android Workshop
 
Developing AIR for Mobile with Flash Professional CS5.5
Developing AIR for Mobile with Flash Professional CS5.5Developing AIR for Mobile with Flash Professional CS5.5
Developing AIR for Mobile with Flash Professional CS5.5
 
GDG GeorgeTown Devfest 2014 Presentation: Android Wear: A Developer's Perspec...
GDG GeorgeTown Devfest 2014 Presentation: Android Wear: A Developer's Perspec...GDG GeorgeTown Devfest 2014 Presentation: Android Wear: A Developer's Perspec...
GDG GeorgeTown Devfest 2014 Presentation: Android Wear: A Developer's Perspec...
 
Modern android development
Modern android developmentModern android development
Modern android development
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basics
 
The Hitchhicker’s Guide to Windows Azure Mobile Services | FalafelCON 2014
The Hitchhicker’s Guide to Windows Azure Mobile Services | FalafelCON 2014The Hitchhicker’s Guide to Windows Azure Mobile Services | FalafelCON 2014
The Hitchhicker’s Guide to Windows Azure Mobile Services | FalafelCON 2014
 
Selendroid - Selenium for Android
Selendroid - Selenium for AndroidSelendroid - Selenium for Android
Selendroid - Selenium for Android
 
Fragments: Why, How, What For?
Fragments: Why, How, What For?Fragments: Why, How, What For?
Fragments: Why, How, What For?
 
Implementing cast in android
Implementing cast in androidImplementing cast in android
Implementing cast in android
 
Clean Architecture @ Taxibeat
Clean Architecture @ TaxibeatClean Architecture @ Taxibeat
Clean Architecture @ Taxibeat
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)
 
What's new in Android P @ I/O Extended Bangkok 2018
What's new in Android P @ I/O Extended Bangkok 2018What's new in Android P @ I/O Extended Bangkok 2018
What's new in Android P @ I/O Extended Bangkok 2018
 
HTML5 for Rich User Experience
HTML5 for Rich User ExperienceHTML5 for Rich User Experience
HTML5 for Rich User Experience
 
Getting Started With Material Design
Getting Started With Material DesignGetting Started With Material Design
Getting Started With Material Design
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)
 
Google I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsGoogle I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb Highlights
 
Jquery fundamentals
Jquery fundamentalsJquery fundamentals
Jquery fundamentals
 
OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial Intro
 

Mehr von Ted Drake

Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024Ted Drake
 
Transforming Accessibility one lunch at a tiime - CSUN 2023
Transforming Accessibility one lunch at a tiime - CSUN 2023Transforming Accessibility one lunch at a tiime - CSUN 2023
Transforming Accessibility one lunch at a tiime - CSUN 2023Ted Drake
 
Inclusive Design for cognitive disabilities, neurodiversity, and chronic illness
Inclusive Design for cognitive disabilities, neurodiversity, and chronic illnessInclusive Design for cognitive disabilities, neurodiversity, and chronic illness
Inclusive Design for cognitive disabilities, neurodiversity, and chronic illnessTed Drake
 
Inclusive design for Long Covid
 Inclusive design for Long Covid  Inclusive design for Long Covid
Inclusive design for Long Covid Ted Drake
 
Covid 19, brain fog, and inclusive design
Covid 19, brain fog, and inclusive designCovid 19, brain fog, and inclusive design
Covid 19, brain fog, and inclusive designTed Drake
 
Customer obsession and accessibility
Customer obsession and accessibilityCustomer obsession and accessibility
Customer obsession and accessibilityTed Drake
 
The Saga of Accessible Colors
The Saga of Accessible ColorsThe Saga of Accessible Colors
The Saga of Accessible ColorsTed Drake
 
Artificial Intelligence and Accessibility - GAAD 2020 - Hello A11y
Artificial Intelligence and Accessibility - GAAD 2020 - Hello A11yArtificial Intelligence and Accessibility - GAAD 2020 - Hello A11y
Artificial Intelligence and Accessibility - GAAD 2020 - Hello A11yTed Drake
 
Expand your outreach with an accessibility champions program
Expand your outreach with an accessibility champions program Expand your outreach with an accessibility champions program
Expand your outreach with an accessibility champions program Ted Drake
 
Intuit's Accessibility Champion Program - Coaching and Celebrating
Intuit's Accessibility Champion Program - Coaching and Celebrating Intuit's Accessibility Champion Program - Coaching and Celebrating
Intuit's Accessibility Champion Program - Coaching and Celebrating Ted Drake
 
Accessibility First Innovation
Accessibility First InnovationAccessibility First Innovation
Accessibility First InnovationTed Drake
 
Inclusive customer interviews make it your friday task
Inclusive customer interviews  make it your friday taskInclusive customer interviews  make it your friday task
Inclusive customer interviews make it your friday taskTed Drake
 
Coaching and Celebrating Accessibility Champions
Coaching and Celebrating Accessibility ChampionsCoaching and Celebrating Accessibility Champions
Coaching and Celebrating Accessibility ChampionsTed Drake
 
Accessibility statements and resource publishing best practices csun 2019
Accessibility statements and resource publishing best practices   csun 2019Accessibility statements and resource publishing best practices   csun 2019
Accessibility statements and resource publishing best practices csun 2019Ted Drake
 
Raising Accessibility Awareness at Intuit
Raising Accessibility Awareness at IntuitRaising Accessibility Awareness at Intuit
Raising Accessibility Awareness at IntuitTed Drake
 
Trickle Down Accessibility
Trickle Down AccessibilityTrickle Down Accessibility
Trickle Down AccessibilityTed Drake
 
Trickle-Down Accessibility - CSUN 2018
Trickle-Down Accessibility - CSUN 2018Trickle-Down Accessibility - CSUN 2018
Trickle-Down Accessibility - CSUN 2018Ted Drake
 
React Native Accessibility - San Diego React and React Native Meetup
React Native Accessibility - San Diego React and React Native MeetupReact Native Accessibility - San Diego React and React Native Meetup
React Native Accessibility - San Diego React and React Native MeetupTed Drake
 
Ubiquitous Transactions - Financial Future and Accessibility
Ubiquitous Transactions - Financial Future and AccessibilityUbiquitous Transactions - Financial Future and Accessibility
Ubiquitous Transactions - Financial Future and AccessibilityTed Drake
 
Automated Testing – Web, Mobile, Desktop - Challenges and Successes
Automated Testing – Web, Mobile, Desktop - Challenges and SuccessesAutomated Testing – Web, Mobile, Desktop - Challenges and Successes
Automated Testing – Web, Mobile, Desktop - Challenges and SuccessesTed Drake
 

Mehr von Ted Drake (20)

Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
 
Transforming Accessibility one lunch at a tiime - CSUN 2023
Transforming Accessibility one lunch at a tiime - CSUN 2023Transforming Accessibility one lunch at a tiime - CSUN 2023
Transforming Accessibility one lunch at a tiime - CSUN 2023
 
Inclusive Design for cognitive disabilities, neurodiversity, and chronic illness
Inclusive Design for cognitive disabilities, neurodiversity, and chronic illnessInclusive Design for cognitive disabilities, neurodiversity, and chronic illness
Inclusive Design for cognitive disabilities, neurodiversity, and chronic illness
 
Inclusive design for Long Covid
 Inclusive design for Long Covid  Inclusive design for Long Covid
Inclusive design for Long Covid
 
Covid 19, brain fog, and inclusive design
Covid 19, brain fog, and inclusive designCovid 19, brain fog, and inclusive design
Covid 19, brain fog, and inclusive design
 
Customer obsession and accessibility
Customer obsession and accessibilityCustomer obsession and accessibility
Customer obsession and accessibility
 
The Saga of Accessible Colors
The Saga of Accessible ColorsThe Saga of Accessible Colors
The Saga of Accessible Colors
 
Artificial Intelligence and Accessibility - GAAD 2020 - Hello A11y
Artificial Intelligence and Accessibility - GAAD 2020 - Hello A11yArtificial Intelligence and Accessibility - GAAD 2020 - Hello A11y
Artificial Intelligence and Accessibility - GAAD 2020 - Hello A11y
 
Expand your outreach with an accessibility champions program
Expand your outreach with an accessibility champions program Expand your outreach with an accessibility champions program
Expand your outreach with an accessibility champions program
 
Intuit's Accessibility Champion Program - Coaching and Celebrating
Intuit's Accessibility Champion Program - Coaching and Celebrating Intuit's Accessibility Champion Program - Coaching and Celebrating
Intuit's Accessibility Champion Program - Coaching and Celebrating
 
Accessibility First Innovation
Accessibility First InnovationAccessibility First Innovation
Accessibility First Innovation
 
Inclusive customer interviews make it your friday task
Inclusive customer interviews  make it your friday taskInclusive customer interviews  make it your friday task
Inclusive customer interviews make it your friday task
 
Coaching and Celebrating Accessibility Champions
Coaching and Celebrating Accessibility ChampionsCoaching and Celebrating Accessibility Champions
Coaching and Celebrating Accessibility Champions
 
Accessibility statements and resource publishing best practices csun 2019
Accessibility statements and resource publishing best practices   csun 2019Accessibility statements and resource publishing best practices   csun 2019
Accessibility statements and resource publishing best practices csun 2019
 
Raising Accessibility Awareness at Intuit
Raising Accessibility Awareness at IntuitRaising Accessibility Awareness at Intuit
Raising Accessibility Awareness at Intuit
 
Trickle Down Accessibility
Trickle Down AccessibilityTrickle Down Accessibility
Trickle Down Accessibility
 
Trickle-Down Accessibility - CSUN 2018
Trickle-Down Accessibility - CSUN 2018Trickle-Down Accessibility - CSUN 2018
Trickle-Down Accessibility - CSUN 2018
 
React Native Accessibility - San Diego React and React Native Meetup
React Native Accessibility - San Diego React and React Native MeetupReact Native Accessibility - San Diego React and React Native Meetup
React Native Accessibility - San Diego React and React Native Meetup
 
Ubiquitous Transactions - Financial Future and Accessibility
Ubiquitous Transactions - Financial Future and AccessibilityUbiquitous Transactions - Financial Future and Accessibility
Ubiquitous Transactions - Financial Future and Accessibility
 
Automated Testing – Web, Mobile, Desktop - Challenges and Successes
Automated Testing – Web, Mobile, Desktop - Challenges and SuccessesAutomated Testing – Web, Mobile, Desktop - Challenges and Successes
Automated Testing – Web, Mobile, Desktop - Challenges and Successes
 

Android accessibility for developers and QA

  • 1. Android Accessibility Bangalore Accessibility Week October 6-10, 2014 Ted Drake, Intuit Accessibility This presentation borrows heavily from the great presentations given by the Google Accessibility team at Google iO: https://drive.google.com/ folderview?id=0B8z0EqKVnjoZbEtZNk05LWhsVHM&usp=sharing Android Accessibility Videos: https://www.youtube.com/playlist?list=PLQbD187567ZYe2HQ24sQxB6jhnWoR_JUJ ! photo: http://www.pinterest.com/pin/559501953680642594/
  • 2. Users move accessibility focus by interacting with the touch screen using explore by touch and accessibility gestures. ! AccessibilityServices interpret exploration and gestures to facilitate different types of navigation AccessibilityService Documentation: http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html An accessibility service runs in the background and receives callbacks by the system when AccessibilityEvents are fired. Such events denote some state transition in the user interface, for example, the focus has changed, a button has been clicked, etc. Such a service can optionally request the capability for querying the content of the active window. Development of an accessibility service requires extending this class and implementing its abstract methods.
  • 3. Meet Talk Back TalkBack is preinstalled on most Android devices, but is also available on the Play Store1. ! TalkBack is enabled from Settings > Accessibility > TalkBack. ! Enabling TalkBack changes the interaction model of the device. • Explore with a single finger. • Double-tap to activate the focused item. • Use two-finger drag to scroll lists. Talkback is pre-installed, but can also be found in the play store: https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback TalkBack support: https://support.google.com/talkback/ !
  • 4. Turn on TalkBack This video shows how to enable TalkBack and how to use it as a developer. It’s also available on YouTube https://www.youtube.com/watch?v=82ivNZI6bIA
  • 5. Common Problems • Content Labeling • Grouping and Ordering • Font Scaling • Web Views and Hybrid Apps
  • 6. • All interactive elements must have a content description: • android:contentDescription • View#setContentDescription • Decorative images: • android:contentDescription=“@null” • For EditText • android:hint • labelFor • Keep labels short and clear. Send Email You spend a lot of time making your screens look great, but are you providing the same experience to TalkBack users? contentDescription allows you to own the experience. Setting the contentDescription to null will tell talkback to ignore the image. Use android:hint on form inputs, as the contentDescription will inherit the value of the input.
  • 7. <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"/> This example shows labelFor and android:hint being used on an input. The hint is not announced when the edit text has a value. More information: https://www.ssbbartgroup.com/blog/2014/03/19/android-accessibility-properties-and-talkback/
  • 8. Grouping and Ordering • TalkBack uses view hierarchy order and on-screen positioning to determine grouping and ordering. • Use ViewGroup 1 2 3 4 5 6 containers to associate related information. Set android:focusable=“true” • The order of items displayed may be controlled. Use android:contentDescription or View#setContentDescription http://developer.android.com/reference/android/view/ViewGroup.html
  • 9. Font Sizing • Android supports large font substitution for low-vision users. • Always use scale-independent pixels(sp). • Avoid density-independent pixels (dip or dp) • This is also important for i18n
  • 10. WebViews • Supported in Android 3.1+ • Enable JavaScript within WebView • Garbage In, Garbage Out! Make sure your HTML is accessible. http://developer.android.com/reference/android/webkit/WebView.html WebViews are not accessible by default, the user must activate this because it uses a JavaScript driven ChromeVox ! • Turning on Accessibility mode, including 'Explore by Touch' in 4.0+. • Enabling 'Enhanced Web Accessibility', or, on older devices, 'Inject Web Scripts'.
  • 11. Custom Views Favorite Actor Dev Anand Om Parkash Aamir Khan This pie chart could be considered a custom view. TalkBack needs to tell the user about positioning, color, text. It also need to describe interactions, such as gestures, taps, and states.
  • 12. Virtual View Hierarchy • Pie Chart • Om Parkash 30% • clickable • checkable • Dev Anand 45% • clickable • checkable • Aamir Khan 25% • clickable • checkable Favorite Actor Dev Anand Om Parkash Aamir Khan What are the components? What are their states?
  • 13. What TalkBack Sees • ViewDecor • Action Bar • Pie Chart • LinearLayout • My Favorite Bars • Pie Chart • Om Parkash 30% • Dev Anand 45% • Aamir Khan 25% Favorite Actor Dev Anand Om Parkash Aamir Khan
  • 14. Custom Views • Delegate accessibility support • Map logical items to virtual views • Expose information about views • Formalize interaction model
  • 15. setAccessibilityDelegate ViewCompat.setAccessibilityDelegate(this, mAccessibilityHelper); } @Override public boolean dispatchHoverEvent(MotionEvent event) { if (mAccessibilityHelper != null && mAccessibilityHelper.dispatchHoverEvent(event)) { return true; } return super.dispatchHoverEvent(event); } We want to check for mAccessibilityHelper support http://developer.android.com/reference/android/view/View.AccessibilityDelegate.html
  • 16. Map Logical to Virtual • Reuse your existing code. • The pie chart already: • Is drawn on the screen • Includes touch events • Uniquely identified
  • 17. @Override protected int getVirtualViewAt(float x, float y) { Wedge wedge = getWedgeAt(x, y); if (wedge != null) return wedge.getId(); return ExploreByTouchHelper.INVALID_ID; } @Override protected void getVisibleVirtualViews(List<Integer> virtualViewIds) { for (Wedge wedge : mWedges) { virtualViewIds.add(wedge.getId()); } }
  • 18. Expose Information • Reuse existing code • Position • Color • Label • Relative Size • Click Handling • Checked Status
  • 19. @Override protected void onPopulateEventForVirtualView( int virtualViewId, AccessibilityEvent event) { Wedge wedge = getWedgeForId(virtualViewId); event.setContentDescription(wedge.getLabel() + ": " + wedge.getPercent() + "%"); } @Override protected void onPopulateNodeForVirtualView( int virtualViewId, AccessibilityNodeInfoCompat node) { Wedge wedge = getWedgeForId(virtualViewId); node.setContentDescription(wedge.getLabel() + ": " + wedge.getPercent() + "%"); node.setBoundsInParent(wedge.getLabelBounds()); ...
  • 20. Formalize Interactions ! node.setCheckable(true); node.setChecked(wedge.isChecked()); node.addAction(AccessibilityNodeInfoCompat.ACTION_CLICK); } @Override protected boolean onPerformActionForVirtualView( int virtualViewId, int action, Bundle arguments) { if (action == AccessibilityNodeInfoCompat.ACTION_CLICK) { return onWedgeClicked(getWedgeForId(virtualViewId)); } Assign your pre-existing actions to the accessibility node http://developer.android.com/reference/android/support/v4/view/accessibility/AccessibilityNodeInfoCompat.html !
  • 21. Android L • Custom AccessibilityAction • Live Regions • Collections • Window API Documentation is sparse for these new features. Presentation from Google IO 14 https://drive.google.com/folderview?id=0B8z0EqKVnjoZbEtZNk05LWhsVHM&usp=sharing https://developer.android.com/preview/api-overview.html#TestingA11y !
  • 22. AccessibilityAction • Swipes and other hard to discover actions • Actions are activated from the Local Context Menu • Provide hints for actions Documentation for this has not yet been released.
  • 23. 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
  • 24. Handling a Custom Action eventView.setAccessibilityDelegate(new AccessibilityDelegate { @Override public onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(host, info); info.addAction(new AccessibilityAction(R.id.dismiss, } @Override getString(R.string.dismiss))); public boolean performAccessibilityAction(View host, int action, Bundle args) { if (action == R.id.dismiss) {} // Logic for action } });
  • 25. Live Regions • Based on the Live Region experience in HTML + ARIA • Content is announced when it changes or appears on screen • Look for TYPE_WINDOW_CONTENT_CHANGED https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions Documentation on live regions not available yet. TYPE_WINDOW_CONTENT_CHANGED: http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html
  • 26. Collections • Similar to a data table in HTML • Supports int, float, and Percent • Query info about table and elements • AccessibilityNodeInfo.CollectionInfo http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.CollectionInfo.html
  • 27. Window API • Introspect all interactive windows: autocomplete, drawers… • AccessibilityFocus can move from one window to another • Retrieve information about properties of windows on the screen that sighted users can interact with. • android.accessibilityservice.AccessibilityServic e.getWindows(): Retrieve a list of objects representing windows information • TYPE_WINDOWS_CHANGED: AccessibilityEvent to see events new features in
  • 28. Android Testing • Use Android Lint • Use TalkBack’s Read From Top to make sure everything is announced on the screen • Use the On-Screen Overlay to see what is being spoken • Martini: Intuit’s UI Test Service Using android lint: https://www.youtube.com/watch?v=OtwCe-YlD5k&list=PLQbD187567ZYe2HQ24sQxB6jhnWoR_JUJ&index=8 Touch exploration help: https://support.google.com/accessibility/android/answer/6006598?hl=en Martini: https://wiki.intuit.com/display/CTOTools/UI+Test+Service
  • 29. Testing • Use Android Lint • Use TalkBack’s Read From Top to make sure everything is announced on the screen • Use the On-Screen Overlay to see what is being spoken Using android lint: https://www.youtube.com/watch?v=OtwCe-YlD5k&list=PLQbD187567ZYe2HQ24sQxB6jhnWoR_JUJ&index=8 Touch exploration help: https://support.google.com/accessibility/android/answer/6006598?hl=en !