Trickle Down Accessibility – CSUN Preview

Matt May tweeted an observation in 2016 introducing Trickle-Down Accessibility and recognized prioritizing our blind customers could lead to less support for others.
Continue Reading Trickle Down Accessibility – CSUN Preview

I will be discussing Trickle-Down Accessibility at the 2018 CSUN Assistive Technology Conference on Wednesday, March 21 at 2:20 pm in Cortez Hill C, 3rd Floor, Seaport Tower.

The following is the proposal for this presentation. I will publish the final presentation for further details.

Trickle-Down Accessibility Proposal

Trickle Down Economics[1] suggests economic growth benefits all members of society. The focus is on tax benefits for corporations and the higher income population, as they have the potential for making larger impacts in economic growth. Providing financial incentives to this population will, in theory, eventually result in higher prosperity for all.

Matt May’s observation on Twitter in 2016 raised awareness of Trickle Down Accessibility:

“Watching a blind advocate tell someone with another disability to center blind issues first and wait for the benefits to trickle down. Wow. [2]

Focusing on screen reader accessibility has distinct advantages for product developers. If your application works with a screen reader, it should also be usable with a keyboard, voice recognition, and switch control devices. Screen reader accessibility also falls in line with automated testing tools.

However, there are many disabilities, and assistive technologies, that are not necessarily benefited by this focus on the blind/low-vision community. Color contrast, closed captioning, readability, consistency in design, user customization, session timeouts, and animation distraction are just a few examples of concerns that often go unaddressed.

Continue Reading Trickle Down Accessibility – CSUN Preview

Find aria-hidden with this bookmarklet

Use this bookmarklet to find aria-hidden attributes on your page. Continue Reading Find aria-hidden with this bookmarklet

I love purpose built bookmarklets that help you find problematic code. I got an email yesterday from Travis Roth about a potential vestigial aria-hidden attribute on an otherwise visible element. Unfortunately, it’s not uncommon to find an element that has aria-hidden=”true” on an element that is visible and should have either “false” or no aria-hidden attribute. This causes assistive technology to ignore the element.

My first reaction was to search the code for aria-hidden attributes, but this can take time and would have to be completed on each page to find the issue.

So I created the following bookmarklet that will find any element on your page that uses aria-hidden. It will force it to be visible and will display the attribute’s value.

screenshot showing the bookmarklets effect on hidden elements

To use this bookmarklet, drag the following link to your bookmark toolbar. Visit your questionable page and click the link.

aria-hidden bookmarklet
Continue Reading Find aria-hidden with this bookmarklet

Enchanted Hills Camp for the Blind and Visually Impaired – Lighthouse SF

Intuit sets aside a week every year to give employees a chance to work with local non-profit organizations. This year, we gathered a small group to visit the Enchanted Hills Camp in Napa to help them prepare for this summer’s campers. It’s a fantastic organization and we loved our time there.

Here are some photographs from the event:

Powered by flickr embed.

Google IO 2017 – Accessibility Notes

Building an accessibility team

The project champion needs to make sure training is available to all people on the team.

  • Create a set of primary and secondary key work paths, i.e. put an item in a shopping cart (first) change avatar image (secondary)
  • Add a checklist and try user testing

Resources and Ideas:

What’s new in Android Accessibility

Accessibility | Android Developers

Accessibility is an important part of any app. Whether you’re developing a new app or improving an existing one, ensure that components are accessible to everyone.

Why develop for accessibility

  • 1 in 5 people will have a disability in their life. – 2010 census
  • Designing for accessibility benefits blind, low vision, and eyes occupied (driving)

Android includes 4 types of assistive technology:

  • TalkBack: Screen reader
  • BrailleBack: Braille output for refreshable braille devices
  • Switch Access: switch control of device
  • Voice Access: control device by voice activation: “scroll up”

Android O’s major focus: increase productivity for users

  • new api additions for accessibility
  • print disabilities (reading disabilities)

New to TalkBack

accessibilityVolume: adjust audio volumen for accessibiity independently from media. So you can watch youtube and control that separately than talkback. This is available when talkback is on.

Volume from youtube is quieted while talkback is being used. it then fades back into the foreground. There’s a new accessibility volume slider

New gestures for talkback.

If there’s a fingerprint sensor on the back of the device, it can be used by talkback users. The sensor has its own set of customizable gestures. For instance,  swipe up on the fingerprint. These can be assigned, such as longpress action

Quickly enable/disable TalkBack

long press the volume keys to quickly turn on/off talkback.

this works on any screen, this makes it easier to test apps and turn off talkback to type information. Press both keys at the same time for a long press and eventually it will turn on/off talkback. the accessibility shortcut can be assigned to switch control, zoom, or other service.

New Text to speech engine can handle multiple languages. Use LocaleSpan to trigger language switching.

2 new APIs

Continuous Gesture API: enable motor impaired users who use head tracker to perform drag and drop, zoom, etc.

Accessibility Button:

A new accessibility button is located in the navigation bar. This allow users to quickly invoke context dependent accessibility features. This sits in the row with back and home buttons

Print disabilities

People with dyslexia, low vision, learning new language… They can now use select to speak. part of talkback 5.2. Select element on screen and talkback will read it. It has a floating action button to enable.

In android o. read whole page, and advanced controls, word level highlighting, set up wizard.

Testing

manual testing: try your app with TalkBack and SwitchAccess.

  • if it is ok in talkback, it should be good for brailleback and select to speak
  • if it works with switch access, it should also work with voice access.

Accessibility Scanner, free app to download on play store. Android's Accessibility Scanner

This analyzes the current screen and provides an audit that can be shared.

The accessibility test framework is still requiring espresso and/or robolectric

Android Accessibility Documentation

Android has a new developer hub for understanding accessibility. There’s a page for Android testing.

Google IO 2017 – Android 0, Studio, and Things Notes

Android Things

Use Android Things with AI to create smart devices: Do it Yourself AI kit

IOT Security with Android Things

Android Things – System on Module architecture. Developer console

Security features are built in: on by default, easy to maintain, infrastructure by Google.

Feature features: OS Hardening, updates verified boot, hardware backed keys, attestation

The main problem in IOT secuirty is economics. the cost of building in security vs. cost of risking security. smaller, lower cost devices may not build in security. Exploits have become their own market

How much is the cost to an engineer to create an attack?

  • Time
  • Money
  • Skill
  • Grit

attack ROI:

How valuable is it?

Pervasive

Can this attack scale enough to be valuable? WiFi injection may be effective, but it doesn’t scale if you have to be near the router. A default credential, i.e. security cams, can be attacked by the thousands.

Privileged

Does the attack give the person privilege to the hardware, accounts?

Persistant

Does the attack give the engineer significant persistance? Can it survive a device reboot?

Security Cost: not every company has the resources to build and maintain security features and infrastructure.

Android Things goal: raise attack costs, reduce ROI, and reduce security costs.

OS Hardening: All of Android’s hardening is enabled in Android Things. Permissions, app sandbox, mandatory access control (Selinux), kernel syscall filtering, full ASLR, FORTIFY, stack-protector-strong…

Developer Action: Declare permissions only as needed, split out privileged code.

All Android Things devices will get infrastructure updates directly from Google. This reduces attack persistance and drives down the attack ROI. Updates can be controlled during critical operations, like a drone is flying. Developers can also test updates and request an update to be stopped

Android Things Keystore

Attestation: Authentication for devices. Attests to what? Authnetic Android Thing Device, product info, device identity, device state (verified boot state), key attributes (allowed modes,…)

Building for Billions

Building for Billions is Androids best practices for low cost/bandwidth devices. Best practices on how to optimize Android apps for low- and no-bandwidth and low-cost devices.

Kotlin

  • Kotlin is now a first-class language for Android.
  • Kotlin Programming Language
  • Kotlin is a statically typed programming language for the JVM, Android and the browser, 100% interoperable with Java.
  • There’s no change in support for Java or C++.
  • Comparable to Swift and Objective C.

Watch Google IO talks  for more info on using Kotlin

Android Studio 3.0 canary is available today.

Watch for unified network profiler. It is interactive, you can go into functions and dive into specific code.

Android Architecture Components

A new collection of libraries that help you design robust, testable, and maintainable apps. Start with classes for managing your UI component lifecycle and handling data persistence.

Android is going to have a device catalog, find out the specifics of different phones and devices.

Android Instant Apps

Android Instant Apps available to everyone

They allow Android users to run your apps instantly, without installation. Android users experience what they love about apps—fast and beautiful user interfaces, high performance, and great capabilities—with just a tap.

Android Instant Apps is now open to all developers, so anyone can build and publish an instant app today.

Use the same code to generate the instant app, use feature modules to define what can be included/removed for instant apps. Look for modularize feature in android studio. They also will have optimization tools to make these features faster.

What’s new in Android O keynote…

Picture in picture is coming to Android O. similar to the way YouTube will let the video reduce to a thumbnail while you scroll other videos in a search. Only now the video can be a thumbnail while you open evernote and write notes

Android O color management will allow colors to be more consistent across devices.

Multi-display. user can choose to send information to multiple displays.

Look for ActivityOptions

$adb shell dumpsys display
getMetrics() on mediaPlayer, mediaRecorder…

You can now use an arbitrary number of audio/video tracks.

WebView allows Google Safe Browsing API.

<meta-data
    android:name=“andorid.webkit.webview.enableSafeBrowsing”
    android:value=“true” />

Web view safe browsing goes back to lollipop

Seek within videos

animatorSet setCurrentPlayTiem (long); - seek within

Reverse

you can now reverse: reverse();

AutoFill

You can now get user name/password and other from Chrome. https://youtu.be/1N9KveJ-FU8?t=9m17s

This will make logging into apps much easier.

Autofill will be included in basic form inputs:  text view, edit text.. no extra work required

You can use hints to the auto-fill api to define data types. Autofill apis for custom veiws and opaque hierarchies

Fonts

Text Stuff: font files can be added to font directory. Downloadable fonts: declare font to be downloaded and cached.  Font provider in Google play services v1.  There is a beta version available. Access to all 800 google fonts

Auto-sizing Text Views

Fonts with auto-resize will change font size as you resize their container. In the past, the container may grow, but the fonts stay the same size. Now they can grow with the container.

AccessibilityService Utilities

Language detection, accessibility button, separate volume controls, finger print

FindViewById update

Current:

View.java: public View findViewById (int id);
TextView tv = (TextView) findViewbyId(R.id.mytextview);

Android O

View.java: public <T extends view> findViewById(int id)
TextView tv = findViewById (R.id.mytextview);

Adaptive Icons.

We will need to worry about Adaptive Icons with future releases. Developers provide background + foreground * mask for multiple devices.

Pin request.

Ask people to pin our app to desktop. ShortcutManager and appWidgetManager. requestPinAppWidget…

Notifications

Notifications are getting more power in O. The user should always be in control. Users and developers want ability to tweak notifications from an app. Notification channels give developers and users fine grain control. Apps can define channels, assign notifications to channels, post notifications

Note: Once you target O. You must use channels or notifications will be dropped!

Strict Mode

Thread policy. unbuffered i/o, VM policy

Media file access

Seekable file descriptors from custom document provider. useful for large remote sources.  Cached data. statey below the quota to avoid aggressive deletion. Use storage manager

getCacheQuoteBytes()
allocateBytes()
setCacheBehaviorTombstone()

Security

Privacy ANDROID_ID is now different for every app,user

net.hostname is empty

Google Play Protect, scans apps on user’s phone. now they are making it obvious by giving the user a notification when it scans and lets them know the state.

Android Studio 3.0

Kotlin available today.

  • You can copy java and paste within kotlin file and it will automatically convert to kotlin code.
  • Java: new packages for java.time, java.nio.file, java.lang.invoke
  • Runtime: Concurrent -copying collector.
  • Smaller heap, faster allocations, faster collections
  • v26 has emojiCompat – bundled or updatable.

Animation

Physics animation: velocity, springs, force. This simplifies the process. It is more natural, interactive, interruptible.

Look at ChainedSpringDemo

Architecture components:

easier android development. lifecycle

Background apps:

  • location is only going to get coarse grained location info
  • wakelocks for cached apps – wakelock is released
  • background execution limits

Alert windows

TYPE_APPLICATION_OVERLAY must be used