Статьи

Введение в специальные возможности Android

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

Android предлагает множество опций и возможностей специальных возможностей, но ими часто пренебрегают на этапе проектирования и реализации. API специальных возможностей были впервые представлены в Android 1.6 (уровень API 4), но многие разработчики не знакомы или не заинтересованы в них. Доступность часто запаздывала, и если вы выполняете быстрый поиск в Google или StackOverflow, там мало упоминаний.

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

Добавление текстового описания к элементам пользовательского интерфейса

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

Описания контента — это самая легкая в использовании функция доступности и одна из самых полезных. Они похожи на комментарии в вашем коде. Google рекомендует использовать описания в основном для элементов ImageViewImageButtonCheckBox

Описания добавляются двумя способами: с помощью макета XML или традиционных методов Java.

Используя XML, вы добавляете описание к изображению, как это (обратите внимание на последнюю строку):

 <ImageView
    android:id="@+id/new_image"
    ...
    android:contentdescription="@string/image_desc"
    />

@stringstrings.xml следующим образом:

 <string name="image_desc">Simple description of what the image represents</string>

Для полей EditText

 android:hint = "Name Field"

Если ваши элементы интерфейса меняют состояние, например, переключатели или флажки, вы должны убедиться, что contentDescription В этом случае используйте метод setContentDescription()

 label.setContentDescription("Toggle is set to: " +  (ToggleButton).isChecked())

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

 android:contentdescription="@null"

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

Убедитесь, что каждый элемент ввода можно сфокусировать и щелкнуть с помощью кнопок со стрелками. Не забудьте визуально указать элемент, на котором фокусируется пользователь, выделив его. У каждого элемента управления в Android эта функция включена по умолчанию, но если вы создали свои собственные элементы, сделайте их фокусируемыми, используя метод setFocusable(true)android:focusable

 <EditText
        ...
       android:focusable = "true"
  />

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

 android:nextFocusDown,
android:nextFocusLeft,
android:nextFocusRight,
android:nextFocusUp

Они говорят сами за себя, но следующий пример кода демонстрирует их использование:

 <EditText
       android:id = "@+id/upper_text_field"
        
        ...
       android:nextFocusDown = "@+id/lower_text_field"
  />

<EditText
       android:id = "@+id/lower_text_field"
        …
        ...
       android:nextFocusUp = "@+id/upper_text_field
  />

Создание собственной службы специальных возможностей

Значок Android Talkback

Служба специальных возможностей связывается с пользователем от имени приложения и обеспечивает навигационную обратную связь, такую ​​как тактильная обратная связь, преобразование текста в речь и визуальные подсказки. Android по умолчанию предоставляет такие услуги, как TalkBack и Explore на ощупь. Они помогают пользователям, которые не могут нормально взаимодействовать с устройством из-за физических недостатков или в особых ситуациях, таких как вождение, тренировка и т. Д.

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

Тестирование доступности

Тестирование так же важно, как и его реализация, поэтому обязательно проверяйте свои приложения после реализации любых специальных возможностей. Это можно сделать, включив TalkBack и Explore одним касанием и пытаясь перемещаться по приложению, используя только звуковую обратную связь и средства управления направлением. Убедитесь, что каждый элемент управления обеспечивает необходимую обратную связь и что звуковые подсказки не повторяются и дольше, чем необходимо. Кроме того, руководящие принципы Android Design предполагают, что каждый фокусируемый элемент должен иметь длину и ширину не менее 48 dp.

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

Вывод

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

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