Специальные возможности
Как я упоминал во введении к этой лекции, примерно 60% пользователей используют, в некотором объеме, функции специальных возможностей. Иногда – это потому что эти люди имеют реальные физические ограничения, иногда – лишь потому, что им это нравится, и иногда – лишь для того, чтобы облегчить использование устройства в определенных условиях.
Во многих странах доступность применения чего-либо людьми с ограниченными физическими способностями (в нашем случае речь идет о специальных возможностях программного обеспечения) – это требование законодательства, в итоге, это необходимо, если вы планируете сделать приложение доступным для подобных регионов. Коротко говоря, поддержка специальных возможностей – это то, что вашему приложению следует реализовать, и оно должно делать это хорошо. К счастью, это не такая уж и сложная задача, как может показаться. (Посмотрите материалы "Создание специального приложения" (http://msdn.microsoft.com/library/windows/apps/hh452681.aspx) и "Введение в использование специальных возможностей в Веб" (http://msdn.microsoft.com/library/windows/desktop/gg671915.aspx). Второй материал посвящен веб-приложениям, но вполне применим и для приложений для Магазина Windows . Кроме того, посмотрите материалы "Руководство и контрольный список для специальных возможностей" (http://msdn.microsoft.com/library/windows/apps/hh700325.aspx), "Методики, которых следует избегать при создании приложений со специальными возможностями" (http://msdn.microsoft.com/ru-ru/library/windows/apps/hh452715.aspx) и "Реализация специальных возможностей для определенных типов содержимого" (http://msdn.microsoft.com/library/windows/apps/hh700326.aspx)).
Может показаться, для реализации специальных возможностей понадобится много работы, так как разработчики сравнительно мало знакомы с тем, что это означает. Чтобы это исправить, потратьте несколько минут на то, чтобы получить непосредственный опыт работы со специальными возможностями. Но, прежде чем вы сделаете что-то еще:
Пройдите в раздел Параметры ПК>Синхронизация параметров (PC Settings>Sync Your Settings) и выключите опции Персонализация рабочего стола (Desktop Personalization) и Специальные возможности (Ease of Access). В противном случае, эффекты, с которыми вы экспериментируете будут перемещены на другие устройства, которые могут у вас быть. Я узнал это на собственном опыте, когда я экспериментировал с настройками контрастности на ноутбуке, после чего экран игры, в которую хотел поиграть мой сын на планшете, практически полностью почернел! Очевидно, то приложение не поддерживало схему высокой контрастности, но мне понадобилось некоторое время для того, чтобы во всём разобраться!
Теперь, когда мы позаботились об этих деталях, попробуйте следующее:
- Нажмите Левую клавишу Shift+Alt+PrintScreen или перейдите в раздел Параметры ПК>Специальные возможности (PC Settings>Ease of Access) и включите режим высокой контрастности (смотрите изображение ниже). Как отреагировало на это приложение? Видны ли все важные элементы? Подобные режимы важны для пользователей, которым сложно различать оттенки цветов.
- Так же вы можете выбрать конкретную высококонтрастную тему, пройдя в раздел Панель управления>Оформление и персонализация>Персонализация (Control Panel>Appearance and Personalization>Personalization), где вы можете выбрать из трех тем с тёмным фоном и одной со светлым. Последняя – это та тема, которая активируется через Параметры ПК (PC Settings) или по нажатию комбинации клавиш Левая клавиша Shift+Alt+PrintScreen:
- В разделе Параметры ПК>Специальные возможности (PC Settings>Ease of Access), включите параметр Увеличить все элементы на экране (Make Everything on the Screen Bigger). Если ваш дисплей достаточно велик, это увеличит масштаб того, что на нём отображается, до 140%. Как приложения реагируют на новые параметры экрана? Как сказано в Главе 6 курса "Введение в разработку приложений для Windows 8 с использованием HTML, CSS и JavaScript", включение этого режима активирует масштабирование разрешения до 140%, даже если вы не используете экран с высокой плотностью пикселей.
- Нажмите Win+Ctrl+U для запуска (и для остановки) встроенного средства для чтения с экрана, которое называется Экранный диктор (Narrator). Нажатие Win+Enter так же запускает его, и если хотите, можете нажать Win+U для перехода в раздел Панель управления>Специальные возможности (Control Panel>Ease of Access Center) и используйте там команду Включить экранный диктор (Start Narrator). (Обратите внимание на то, что Экранный диктор – это настольное приложение, которое запускается свернутым. Вам нужно закрыть это приложение для того, чтобы остановить Экранного диктора). Теперь выключите монитор. Можете ли вы пользоваться приложением? Что происходит, когда вы перемещаетесь по нему, используя клавиатуру? Слышите ли вы озвученные данные о том, какой элемент сейчас выделен? Это очень важно для незрячих людей и для людей со слабым зрением.
- Если у вас есть мышь, отключите её и попробуйте перемещаться по приложению только с помощью клавиатуры (теперь можете открыть глаза). Это важно для пользователей с физическими ограничениями и для тех, кто полагается на распознавание речи.
- При подключенной мыши пройдите в раздел Панель управления >Специальные возможности и выполните команду Включить экранную клавиатуру (Start On-Screen Keyboard) для того, чтобы испытать навигацию только с помощью мыши или сенсорного экрана. Эта специальная клавиатура отличается от той, которая появляется при прикосновении к полю ввода (смотрите Главу 3 курса "Пользовательский интерфейс приложений для Windows 8, созданных с использованием HTML, CSS и JavaScript"), так как она всегда остаётся видимой.
Благодаря полученному опыту, я надеюсь, вы получили некоторое понимание того, что означают специальные возможности. Проще говоря, они предназначены для ключевых сценариев поддержки доступности приложений: это работа с экранным диктором, ввод данных только с помощью мыши или только с помощью клавиатуры, схемы с высокой контрастностью и масштабирование разрешения.
Две последних темы раскрыты в Главе 6 курса "Введение в разработку приложений для Windows 8 с использованием HTML, CSS и JavaScript", там рассказано, как работать с различными масштабами разрешения, как обрабатывать различные размеры экрана (что может произойти в результате масштабирования разрешения) и как предоставлять растровые изображения для различных масштабов разрешения для обеспечения их наилучшего вида. В качестве краткого руководства вы так же можете воспользоваться примером "Масштабирование в соответствии с DPI" (http://code.msdn.microsoft.com/windowsapps/Scaling-sample-cf072f4f).
Особенности ввода так же обсуждались в Главе 3 курса "Пользовательский интерфейс приложений для Windows 8, созданных с использованием HTML, CSS и JavaScript". Напоминаю вам снова, что политика сертификации приложения (раздел 3.5.) требует, чтобы приложения поддерживали все формы ввода. Обычно это не проблема в случае с мышью и сенсорным экраном. Настоящая работа начинается тогда, когда нужно убедиться в том, что вашим приложением можно пользоваться, применяя лишь клавиатуру. Обратитесь за подробностями к материалу "Реализация специальных возможностей клавиатуры" (http://msdn.microsoft.com/library/windows/apps/hh700327.aspx). Тестирование приложения с использованием Экранного диктора так же позволяет обнаружить, уделили ли вы достаточно внимания навигации с помощью клавиатуры, так как неважно, какие подписаны ваши элементы управления, если пользователь даже не может установить на них фокус ввода!
Так же полезно упомянуть, что включение скрытых подписей в видео может помочь людям с ослабленным слухом. Выполнение этого, однако, больше относится к видеоданным, или может быть реализовано с помощью наложения текстового элемента на элемент управления, выводящий видео. Смотрите материал "HTML5 и специальные возможности" (http://msdn.microsoft.com/en-us/magazine/hh204741.aspx) в MSDN Magazine для того, чтобы больше узнать о специальных возможностях видео.
Посмотрим теперь, как мы можем поддержать возможности работы с Экранным диктором и высококонтрастные схемы.
Врезка: Средства проверки специальных возможностей
Windows SDK включает в себя два инструмента, которые могут помочь вам проверить вашу реализацию специальных возможностей. Первое называется Inspect, это средство для автоматической проверки пользовательского интерфейса, которое проверяет данные специальных возможностей, которые вы предоставляете экранному диктору и даёт вам знать, что вы пропустили. Второе называется AccChecker, которое выполняет серию проверок всего приложения. Вы можете найти эти инструменты в папке установки Windows SDK, обычно в c:\Program Files (x86)\Windows Kits\8.0\bin\x86. Кроме того, вас могут заинтересовать инструменты Accessible Event Watcher и UI Automation Verify. Подробности об их использовании можно найти в материалах "Инструменты тестирования" (http://msdn.microsoft.com/library/windows/desktop/dd373661.aspx) и "Проверка специальных возможностей приложения" (http://msdn.microsoft.com/library/windows/apps/hh452726.aspx). Конечно, для наиболее полного тестирования, найдите несколько пользователей, которые регулярно работают с технологиями специальных возможностей, настройте им лицензию разработчика (так вы сможете установить у них пакет приложения) и передайте им приложение для тестирования.
Врезка: Экранный диктор и атрибуты tabindex
Подготавливая ваше приложение к возможности навигации с помощью клавиатуры, не используйте атрибуты tabindex для элементов, которые в них не нуждаются, полагая, что подобный поможет Экранному диктору работать с неинтерактивными элементами. Это, на самом деле, не так. Экранный диктор имеет собственные клавиатурные команды (CapsLock+клавиши-стрелки) и собственные режимы навигации, которые позволяют ему прочесть для пользователя всё, что находится на экране, независимо от tabindex. По этим причинам, установка атрибута tabindex для статических элементов вредит удобности работы с Экранным диктором. Вам следует устанавливать это свойство только для интерактивных элементов. Другими словами, нужно понимать, что работа с приложением с использованием клавиатуры и работа с Экранным диктором – это разные вещи, и размышляйте о tabindex только в контексте навигации с помощью клавиатуры.