Опыт разработки навигационного приложения для людей с серьезными зрительными ограничениями

Тема использования средств спутниковой навигации людьми с нарушениями зрения для ориентирования на местности является предметом многочисленных исследований и особой новизной не отличается. В настоящее время разработан и активно используется уже целый ряд готовых программных и аппаратных решений.

Целью данной статьи не является ни сколько-нибудь обстоятельный их анализ или обзор. Это попытка лишь подытожить и обобщить собственный опыт в заявленной области и выявить специфические для нее задачи и возможные подходы к их решению.

Идея создания очередного навигационного приложения для людей со зрительными ограничениями возникла из-за того, что каждое из существующих решений обладает своими, и на наш взгляд весьма существенными, недостатками. Разумеется, наш проект тоже не претендует на полноту и исключительность, но тут греет душу сознание того, что в нашей власти к нему сколь угодно приблизиться. Как говорится, своя рука владыка.

Еще одной, если не главной, предпосылкой послужил тот факт, что за последние годы, благодаря стараниям КСРК ВОС, использование средств спутниковой навигации при ориентировании прочно вошло в повседневную практику многих незрячих. В качестве базового приложения для этой цели применялась главным образом программа Loadstone, работающая на платформе Symbian. Однако сейчас Symbian переживает не лучшие времена или, - будем называть вещи своими именами, - попросту уходит в прошлое. Полезную же и перспективную практику, на наш взгляд, стоит не только сохранять, но и развивать.

На роль базовой платформы для нового приложения был выбран Android. Эта платформа представляется нам весьма перспективной, и популярность ее в наши дни неумолимо растет. Не станем скрывать, что весьма существенным доводом в пользу Android для нас послужило и то обстоятельство, что от прочих достойных рассмотрения альтернатив он отличается крайней дружественностью по отношению к разработчикам приложений. Это соображение перевесило даже тот факт, что на момент выбора Android существенно уступал, скажем, iOs по качеству и, что особенно существенно в нашем случае, по невизуальной доступности. Тем не менее, открытость платформы и динамика ее развития позволяли нам делать довольно оптимистичные прогнозы, и сейчас, по прошествии определенного времени, приятно отметить, что в прогнозах этих мы не ошиблись. Современные версии системы, начиная с 4.2.2, мы склонны считать уже вполне пригодными для невизуального использования.

Из сказанного можно сделать вывод, что задачу свою мы видели в портировании привычного и хорошо себя зарекомендовавшего приложения Loadstone под современную платформу Android. Однако на самом деле вопрос портирования для нас фактически даже не стоял на повестке дня, ибо практика использования Loadstone выявила не только сильные, но и слабые его стороны.

Loadstone - приложение весьма специфическое, ориентированное практически исключительно на незрячего пользователя. Во многом именно это обстоятельство обеспечило ему популярность среди представителей целевой аудитории. Loadstone реализует как раз тот функционал, который горячо востребован незрячими пользователями и, в то же время, в полном объеме не предлагается, пожалуй, никаким другим приложением. С другой стороны, в нем практически полностью отсутствует функционал, привычный для массового пользователя, что сильно сужает круг лиц, заинтересованных в развитии проекта. Кроме того, ограниченность базовых концепций, лежащих в его основе, на данный момент делает дальнейшее развитие уже практически невозможным без глобального пересмотра всей структуры программы.

Нам же результатом нашей деятельности хотелось видеть приложение, обладающее оптимальным набором функций традиционных навигационных приложений, ориентированных на массового пользователя, с опорой на достаточно серьезную картографическую базу, обладающее невизуально доступным интерфейсом, и, плюс к тому, реализующее дополнительный набор функций, как минимум эквивалентный тому, что давал Loadstone.

Решение такой задачи с нуля потребовало бы немалых затрат времени и сил, не говоря уже о том, что львиная доля работы состояла бы по сути в "изобретении велосипеда", то есть в прохождении пути, достаточно уже истоптанного другими разработчиками. Рациональным выходом из положения виделось объединение с каким-либо свободным проектом, посвященным разработке навигационного приложения традиционного толка, что дало бы нам возможность сосредоточить свои усилия практически исключительно на обеспечении невизуальной доступности интерфейса и разработке дополнительного функционала, специфичного для интересующей нас целевой группы. Таким базовым проектом и стал для нас OsmAnd. С разработчиками OsmAnd были достигнуты все необходимые соглашения, в результате чего, в частности, многие наши доработки вошли и в основную версию приложения.

К моменту начала нашей работы в OsmAnd уже был реализован базовый набор функций навигационного приложения с опорой на картографическую поддержку OpenStreetMaps, что нас вполне устраивало. Однако невизуальная доступность программы оставляла желать много лучшего, что являлось не столько особенностью программы, сколько естественным следствием недостаточной развитости средств специального доступа, обеспечиваемых операционной системой. Актуальной на тот момент версией Android была 2.3. Так что на первых порах немало сил у нас ушло на преодоление вопиющего убожества этих средств.

Ситуация серьезно изменилась с выходом 4-й версии Android, где средства специального доступа были уже серьезным образом доработаны, а начиная с версии 4.2.2, как отмечалось выше, платформу в целом стало можно считать действительно невизуально доступной. Для обеспечения общей невизуальной доступности интерфейса приложения теперь от разработчика практически не требуется специальных усилий, достаточно лишь соблюдать элементарные дисциплинарные требования. Это позволило нам сосредоточить свое внимание главным образом на дополнительной функциональности. С другой стороны, структура самого OsmAnd тоже несколько изменилась. В нем появилось понятие plugin, что, в свою очередь, обеспечило большую независимость и свободу развития для альтернативных ветвей проекта.

Итак, вынесем пока за скобки вопросы доступности интерфейса и зададимся вопросом: какой же функциональности мы ждем в первую очередь от навигационного приложения с точки зрения учета специфических потребностей интересующей нас целевой аудитории? Прежде всего, выделим два момента: обеспечение пешеходной навигации и наличие средств, помогающих сориентироваться в окружающей среде. Режим пешеходной навигации в OsmAnd уже присутствует, поэтому мы заострим внимание на дополнительных средствах ориентирования. Именно проработанность данного аспекта выгодно отличает Loadstone в глазах незрячих пользователей от традиционных навигационных приложений, где он, как правило, вовсе оставлен без внимания, ибо считается, что о непосредственном своем окружении человек получает достаточно информации при помощи зрения, недостаток коего мы как раз и стремимся по возможности скомпенсировать.

В качестве таких дополнительных средств ориентировки в программу были внесены следующие функции:

Первые две функции идеологически заимствованы из Loadstone, хотя и реализованы несколько иначе. Однако сильной стороной Loadstone было то, что он позволял оперативно сориентироваться не только относительно пункта назначения, но и относительно ближайших известных объектов, так называемых POI, выдавая по запросу вербальную информацию об их размещении. Разумеется, такая функциональность в традиционных навигационных приложениях отсутствует, ибо все известные окружающие объекты отображаются на карте, предполагающей визуальное восприятие. В OsmAnd можно получить и вербальную информацию через режим поиска, но это крайне неэффективно. Поэтому в программе на первых порах был реализован режим исследования карты касанием.

После переработки средств специального доступа в Android наша реализация этого режима оказалась недоступной и нуждалась в принципиальном пересмотре. Однако, с одной стороны, практика использования заставила нас несколько усомниться в полезности подхода как такового, ибо плотность и нерегулярность расположения объектов на карте сильно затрудняет исследование, с другой же стороны, новая реализация средств специального доступа, появление в системе понятия о фокусе доступности с возможностью отслеживать его положение вызвали к жизни иное, более простое и, как нам кажется, изящное решение.

Принцип звуковой и тактильной индикации направления на точку был распространен и на списки найденных объектов в режиме поиска, в результате чего их информативность при невизуальном доступе существенно возросла. Появилась возможность, просто просмотрев такой список и слегка повращав аппарат, получить вполне адекватное представление о взаиморасположении объектов.

Это и легло в основу новой функции осмотра окрестностей, которая состоит теперь просто в выводе списка всех известных программе объектов, находящихся неподалеку от текущего местоположения, реального или виртуального.

Теперь вернемся к обсуждению интерфейса, но не столько с точки зрения его принципиальной невизуальной доступности, сколько с точки зрения практической эффективности и удобства для людей, отягощенных жесткими зрительными ограничениями.

Интерфейс подавляющего большинства более или менее продвинутых мобильных устройств в последнее время в основном базируется на сенсорном экране. Причем, данная тенденция свойственна отнюдь не только Android, но и другим современным платформам, таким как iOs или Windows Mobile.

Невизуальная доступность сенсорного экрана в Android версий ниже 4 не выдерживала никакой критики, поэтому незрячим пользователям, как правило, рекомендовалось выбирать аппараты, оснащенные физическими органами управления. В современных версиях Android сенсорный экран стал вполне пригоден для использования без зрительного контроля, но и соответствующие аппараты лишились практически всех физических органов управления. Так что альтернатив не осталось.

Понятно, что манипуляции с сенсорным экраном, предполагающие точное позиционирование касаний, трудно выполнимы без зрительного контроля, особенно во время движения. Обычно нужен некоторый навык. Именно из этих соображений, отказавшись в OsmAnd от режима исследования карты наощупь, мы и действия, вызываемые касаниями карты, сделали в режиме доступности не зависящими от позиции точки прикосновения.

В случае же именно навигационного приложения, призванного помочь незрячим в ориентировании на местности, сенсорный экран таит в себе еще один подвох: ведь он в гораздо большей степени, чем, скажем, кнопочное управление, требует задействования обеих рук. Если же мы вспомним, что одна рука незрячего пешехода, как правило, занята тростью, то некоторая обременительность такого интерфейса станет очевидной.

Чтобы преодолеть этот недостаток, мы ввели в программу голосовое управление. Целый ряд наиболее часто востребованных действий могут быть вызваны встряхиванием аппарата с последующим произнесением соответствующей команды. Такая операция легко выполняется одной рукой. Возможность пользоваться голосовыми командами обеспечивает человеку с проблемами зрения гораздо большую свободу действий в процессе работы с сенсорным устройством, позволяя ему управлять программой непосредственно в движении, что крайне важно для точности позиционирования объектов.

В заключение хотелось бы сказать о том, что в результате нашей совместной работы люди с ограничениями зрения получили возможность использовать одно из популярных на сегодняшний день в среде Android навигационных приложений, со всем арсеналом его инструментария. Всё это стало возможным благодаря интеграции в программу средств невизуального доступа.

В результате незрячие пользователи имеют доступ к разнообразным источникам картографической информации, а это именно то, чего так не хватает в программе Loadstone.

Другим выгодным отличием нового приложения является наличие в нем встроенных средств автоматизированного построения маршрута.

Возможно, на первых порах нелегко будет расстаться с привычными для всех многочисленными горячими клавишами, дающими быстрый доступ к практически любой информации в Loadstone, но над этой проблемой, как и над компенсацией других возможностей, утраченных в связи с переходом на новое программное обеспечение, мы работаем в данный момент.

Так, например, для того, чтобы при переходе на OsmAnd пользователи Loadstone не потеряли наработанной ими собственной базы точек, мы написали утилиты, позволяющие преобразовывать точки маршрутов и базы данных Loadstone в формат GPX OsmAnd.

В перспективе мы видим ряд проблем, решение которых необходимо для более комфортной работы незрячего человека с новым для него навигационным приложением. При этом одним из наших приоритетов остается интеграция средств невизуальной доступности без нарушения целостности концепции приложения.

Участники проекта:

Ведущий программист Порецкий И.Б.

Руководитель проекта "Спутниковая навигация для незрячих" учебного центра КСРК ВОС Пивень А.В.

Сотрудник отдела адаптивных технологий КСРК ВОС программист Расстанаева М.А.

Преподаватель, методист Цветкова С.В.

Преподаватели по программе "Спутниковая навигация для незрячих" учебного центра КСРК ВОС Боткина С.А., Олейников М.В.