SlideShare a Scribd company logo
Designing Accessible
Android Applications
(information provided till Kitkat)
Nov, 2013
Sample Project
http://goo.gl/m3LUx
Google Confidential and Proprietary
Agenda

WHAT

WHY

HOW

is Accessibility? do we care?

to implement it?

is provided in
Framework?

to test it?

Google Confidential and Proprietary
What is Accessibility.
Mostly used for people with special needs.

Hearing

Visual

Visual

motion

Google Confidential and Proprietary
Why make your apps accessible?

Reach!
Approximate number of people with special needs

Google Confidential and Proprietary
Why make your apps accessible?

Reach!
Approximate number of people with special needs

~1 billion users out of 7 billion

Google Confidential and Proprietary
Why make your apps accessible?
Empowering users!
We don’t use all the senses every time..

Google Confidential and Proprietary
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
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
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
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
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
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
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
Features in Jelly Bean
Updated in Kitkat
Gestures
● Quick shortcuts available in
Global Context Menu

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

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

Google Confidential and Proprietary
Features in Kitkat
Global Captioning Preferences
● Use Videoview API in your
applications and use
addSubtitleSource() method.

● Captioning Manager API available.

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

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/

Google Confidential and Proprietary
(demo)

Google Confidential and Proprietary
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
What framework provides
Google Play
● Paid apps in many Countries
● DCB

Developer Console
● Countries and currencies
● Statistics

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

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

Google Confidential and Proprietary
(demo)

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

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"
... />

Google Confidential and Proprietary
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
<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
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
(demo)

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

Google Confidential and Proprietary
Logical grouping and ordering

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>
Google Confidential and Proprietary
Custom-drawn views
● Use or extend existing classes and interfaces when
possible
● Android 4.1 added support for AccessibilityNodeProviders

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/ExploreByTouch
Helper.html

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

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

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

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

Google Confidential and Proprietary
Thanks and Questions?
Send feedback to:
soniash@google.com
soniash@gmail.com
G+ soniash
@sonia1sh
Google Confidential and Proprietary

More Related Content

Similar to Android accessibility till_kitkat_nov2013_andevcon

Android Made Simple
Android Made SimpleAndroid Made Simple
Android Made Simple
Gabriel Dogaru
 
GDCS - Introduction to Google Products and Technologies.pptx
GDCS - Introduction to Google Products and Technologies.pptxGDCS - Introduction to Google Products and Technologies.pptx
GDCS - Introduction to Google Products and Technologies.pptx
GoogleDeveloperStude25
 
Making money with android applications
Making money with android applicationsMaking money with android applications
Making money with android applications
sonia1sh
 
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
Paris Android User Group
 
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
e-Legion
 
Android Presentation By Ashok Kumar Pachauri
Android Presentation By Ashok Kumar PachauriAndroid Presentation By Ashok Kumar Pachauri
Android Presentation By Ashok Kumar Pachauri
अशोक पचौरी
 
Java Meetup - 12-03-15 - Android Development Workshop
Java Meetup - 12-03-15 - Android Development WorkshopJava Meetup - 12-03-15 - Android Development Workshop
Java Meetup - 12-03-15 - Android Development Workshop
Kasun Dananjaya Delgolla
 
Introduction to Cloud Computing and Google Cloud Platform.
Introduction to Cloud Computing and Google Cloud Platform.Introduction to Cloud Computing and Google Cloud Platform.
Introduction to Cloud Computing and Google Cloud Platform.
vriddhigupta
 
Getting started with cloud
Getting started with cloudGetting started with cloud
Getting started with cloud
palakmantry
 
A Kickstart to Google Cloud
A Kickstart to Google CloudA Kickstart to Google Cloud
A Kickstart to Google Cloud
GDSCDJSCE
 
Mobile Accessibility
Mobile AccessibilityMobile Accessibility
Mobile Accessibility
Ted Drake
 
Android App Development - 01 Introduction
Android App Development - 01 IntroductionAndroid App Development - 01 Introduction
Android App Development - 01 Introduction
Diego Grancini
 
Google Integration in Android Apps - Mooscon 2013 Cebit
Google Integration in Android Apps - Mooscon 2013 CebitGoogle Integration in Android Apps - Mooscon 2013 Cebit
Google Integration in Android Apps - Mooscon 2013 Cebit
Friedger Müffke
 
Android Presentation By Ashok Kumar Pachauri
Android Presentation By Ashok Kumar PachauriAndroid Presentation By Ashok Kumar Pachauri
Android Presentation By Ashok Kumar Pachauri
अशोक पचौरी
 
YouTube Mobile Webapp: On the edge of Html5
YouTube Mobile Webapp: On the edge of Html5YouTube Mobile Webapp: On the edge of Html5
YouTube Mobile Webapp: On the edge of Html5
SMART DevNet
 
Easy path to machine learning (2022)
Easy path to machine learning (2022)Easy path to machine learning (2022)
Easy path to machine learning (2022)
wesley chun
 
Delegating user tasks in applications
Delegating user tasks in applicationsDelegating user tasks in applications
Delegating user tasks in applications
Friedger Müffke
 
Android Intro
Android IntroAndroid Intro
Android Intro
Justin Grammens
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
lzongren
 
Android studio 4.0 new features preview
Android studio 4.0 new features previewAndroid studio 4.0 new features preview
Android studio 4.0 new features preview
Concetto Labs
 

Similar to Android accessibility till_kitkat_nov2013_andevcon (20)

Android Made Simple
Android Made SimpleAndroid Made Simple
Android Made Simple
 
GDCS - Introduction to Google Products and Technologies.pptx
GDCS - Introduction to Google Products and Technologies.pptxGDCS - Introduction to Google Products and Technologies.pptx
GDCS - Introduction to Google Products and Technologies.pptx
 
Making money with android applications
Making money with android applicationsMaking money with android applications
Making money with android applications
 
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
 
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
 
Android Presentation By Ashok Kumar Pachauri
Android Presentation By Ashok Kumar PachauriAndroid Presentation By Ashok Kumar Pachauri
Android Presentation By Ashok Kumar Pachauri
 
Java Meetup - 12-03-15 - Android Development Workshop
Java Meetup - 12-03-15 - Android Development WorkshopJava Meetup - 12-03-15 - Android Development Workshop
Java Meetup - 12-03-15 - Android Development Workshop
 
Introduction to Cloud Computing and Google Cloud Platform.
Introduction to Cloud Computing and Google Cloud Platform.Introduction to Cloud Computing and Google Cloud Platform.
Introduction to Cloud Computing and Google Cloud Platform.
 
Getting started with cloud
Getting started with cloudGetting started with cloud
Getting started with cloud
 
A Kickstart to Google Cloud
A Kickstart to Google CloudA Kickstart to Google Cloud
A Kickstart to Google Cloud
 
Mobile Accessibility
Mobile AccessibilityMobile Accessibility
Mobile Accessibility
 
Android App Development - 01 Introduction
Android App Development - 01 IntroductionAndroid App Development - 01 Introduction
Android App Development - 01 Introduction
 
Google Integration in Android Apps - Mooscon 2013 Cebit
Google Integration in Android Apps - Mooscon 2013 CebitGoogle Integration in Android Apps - Mooscon 2013 Cebit
Google Integration in Android Apps - Mooscon 2013 Cebit
 
Android Presentation By Ashok Kumar Pachauri
Android Presentation By Ashok Kumar PachauriAndroid Presentation By Ashok Kumar Pachauri
Android Presentation By Ashok Kumar Pachauri
 
YouTube Mobile Webapp: On the edge of Html5
YouTube Mobile Webapp: On the edge of Html5YouTube Mobile Webapp: On the edge of Html5
YouTube Mobile Webapp: On the edge of Html5
 
Easy path to machine learning (2022)
Easy path to machine learning (2022)Easy path to machine learning (2022)
Easy path to machine learning (2022)
 
Delegating user tasks in applications
Delegating user tasks in applicationsDelegating user tasks in applications
Delegating user tasks in applications
 
Android Intro
Android IntroAndroid Intro
Android Intro
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
 
Android studio 4.0 new features preview
Android studio 4.0 new features previewAndroid studio 4.0 new features preview
Android studio 4.0 new features preview
 

Recently uploaded

AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
Dinusha Kumarasiri
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
flufftailshop
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 

Recently uploaded (20)

AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 

Android accessibility till_kitkat_nov2013_andevcon

  • 1. Designing Accessible Android Applications (information provided till Kitkat) Nov, 2013 Sample Project http://goo.gl/m3LUx 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: http://eyes-free.blogspot.com/ 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
  • 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
  • 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: http://developer.android. 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: https://developers.google.com/events/io/sessions/258451203 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: soniash@google.com soniash@gmail.com G+ soniash @sonia1sh Google Confidential and Proprietary