Внедрить тактильные ощущения

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

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

На этой странице представлен пошаговый контрольный список для настройки соответствия оборудования для наилучшего использования тактильных API Android.

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

Схема вариантов использования тактильных технологий для разработчиков приложений и производителей устройств

Рисунок 1. Наращивание знаний между производителями устройств и разработчиками

Контрольный список внедрения тактильной связи

  1. Реализация констант

    • Список констант для реализации тактильных ощущений.
  2. Константы сопоставления между HAL и API

  3. Оцените оборудование

    • Инструкция по целевому тактильному воздействию. Используйте эти инструкции для быстрой проверки вашего оборудования.

Ниже мы рассмотрим каждый из этих шагов более подробно.

Шаг 1. Реализация констант

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

Блок-схема процесса внедрения тактильной технологии

Рисунок 2. Эффекты реализации

Блок-схема шагов реализации примитивов

Рисунок 3. Реализация примитивов

Проверьте статус реализации следующих тактильных констант.

Тактильные константы Локации и резюме
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK Класс VibrationEffect
Тактильные константы в VibrationEffect не включают в себя какие-либо события ввода и не имеют элементов пользовательского интерфейса. Вместо этого константы включают в себя понятие уровней энергии, например EFFECT_CLICK и EFFECT_HEAVY_CLICK , которые вызываются createPredefined() .
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD Класс VibrationEffect.Composition
Тактильным константам в VibrationEffect.Composition разрешено иметь масштабируемую интенсивность, которая вызывается addPrimitive(int primitiveId, float scale, int delay) .

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

  1. EFFECT_CLICK

    Вибрация формы волны, созданная с помощью VibrationEffect.createWaveform , и время, настроенное в frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern .

  2. EFFECT_HEAVY_CLICK

    Вибрация формы волны, созданная с помощью VibrationEffect.createWaveform , и время, настроенное в frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern .

  3. EFFECT_DOUBLE_CLICK

    Вибрация формы волны, созданная с помощью VibrationEffect.createWaveform и таймингов (0, 30, 100, 30).

  4. EFFECT_TICK

    Вибрация формы волны, созданная с помощью VibrationEffect.createWaveform , и время, настроенное в frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern .

Блок-схема этапов тестирования тактильной обратной связи

Рисунок 4. Реализация констант обратной связи

Проверьте состояние следующих констант общедоступных отзывов.

Тактильные константы Локации и резюме
CLOCK_TICK , CONTEXT_CLICK , KEYBOARD_PRESS , KEYBOARD_RELEASE , KEYBOARD_TAP , LONG_PRESS , TEXT_HANDLE_MOVE , VIRTUAL_KEY , VIRTUAL_KEY_RELEASE , CONFIRM , REJECT , GESTURE_START , GESTURE_END Класс HapticFeedbackConstants
Тактильные константы в HapticFeedbackConstants помогают событиям ввода с определенными элементами пользовательского интерфейса, такими как KEYBOARD_PRESS и KEYBOARD_RELEASE , которые вызываются методом performHapticFeedback() .

Шаг 2. Сопоставьте константы между HAL и API.

Шаг 2 представляет рекомендуемые сопоставления между общедоступными константами HAL и константами API. Если оборудование, оцененное на шаге 1, не реализует константы HAL, то следует использовать шаг 2 для обновления резервных шаблонов, описанных в шаге 1, чтобы генерировать аналогичные выходные данные. Сопоставлению помогают две разные модели по умолчанию.

  • Дискретная модель (простая)

    • Амплитуда является ключевой переменной этой модели. Каждый объект в HAL представляет собой различную тактильную амплитуду.
    • Эта модель представляет собой минимальное требование, необходимое для реализации базового тактильного UX.
    • Более продвинутый тактильный UX требует усовершенствованного оборудования и продвинутой модели (непрерывной модели).
  • Непрерывная модель (расширенная)

    • Текстура и амплитуда являются ключевыми переменными этой модели. Каждый объект в HAL представляет разные тактильные текстуры. Амплитуда каждого объекта HAL контролируется масштабным коэффициентом ( S ).
    • Для этой модели требуется современное оборудование. Если OEM-производители хотят использовать расширенный тактильный пользовательский интерфейс с VibrationEffect.Composition (для наилучшего использования новейших тактильных API), рекомендуется реализовать свое оборудование с использованием этой модели.

Дискретная модель

Рекомендуется сопоставить все общедоступные константы, представленные в API, с соответствующими константами HAL. Чтобы начать этот процесс, выясните, сколько тактильных сигналов с дискретной амплитудой устройство может определить в HAL. Конкретный вопрос, построенный вокруг этого понятия, выглядит следующим образом: сколько одноимпульсных тактильных эффектов с ощутимой человеком разницей амплитуды можно определить в моем телефоне? Ответ на этот вопрос определяет отображение.

Определение констант HAL — процесс, зависящий от оборудования. Например, телефон начального уровня может иметь только аппаратные возможности для создания одного тактильного сигнала. Устройства с более совершенными аппаратными компонентами создают более широкий диапазон дискретных уровней амплитуды и могут определять несколько тактильных сигналов в HAL. Сопоставление констант HAL-API берет константу HAL (используя среднюю амплитуду в качестве базовой линии), а затем на ее основе упорядочивает более сильные или более слабые эффекты.

Диаграмма постоянного диапазона HAL и амплитуд обратной связи

Рисунок 5. Диапазон констант HAL по амплитуде

Когда количество констант HAL с дискретной амплитудой определено, пришло время сопоставить константы HAL и API с количеством констант HAL. Этот процесс сопоставления может сегментировать одну импульсную константу API на три дискретные группы уровней амплитуды. Способ сегментации констант API основан на принципах UX для сопровождения входных событий. Дополнительную информацию см. в разделе «Дизайн Haptics UX» .

Дискретная модель для отображения констант HAL-API

Рисунок 6. Сопоставление констант HAL-API: дискретная модель

Если ваше устройство поддерживает только две константы HAL с дискретными амплитудами, рассмотрите возможность объединения констант HAL уровня средней и высокой амплитуды. Примером этого понятия на практике может быть сопоставление EFFECT_CLICK и EFFECT_HEAVY_CLICK с одной и той же константой HAL, которая будет константой HAL уровня средней амплитуды. Если ваше устройство поддерживает только одну константу HAL с дискретной амплитудой, рассмотрите возможность объединения всех трех уровней в один.

Непрерывная модель

Непрерывная модель с масштабируемостью амплитуды может применяться для определения констант HAL. Коэффициент масштабирования ( S ) можно применить к константам HAL (например, HAL_H0 , HAL_H1 ) для создания масштабированного HAL ( HAL_H0 x S ). В этом случае масштабированный HAL отображается для определения констант API ( HAL_H0 x S1 = H0S1 = EFFECT_TICK ), как показано на рисунке 7. Используя масштабируемость амплитуды непрерывной модели, устройство может хранить небольшое количество констант HAL с характерными текстурами. и добавьте вариации амплитуды, отрегулировав масштабный коэффициент ( S ). Производители устройств могут определить количество констант HAL в зависимости от того, сколько различных тактильных текстур они хотят предоставить.

Диапазон констант HAL по текстуре и амплитуде

Рисунок 7. Диапазон констант HAL по текстуре (HAL_H0) и шкале амплитуды (S)

Непрерывная модель для сопоставления констант HAL-API

Рисунок 8. Сопоставление констант HAL-API: непрерывная модель

В непрерывной модели разные константы HAL представляют собой разные тактильные текстуры , а не разные амплитуды; масштабный коэффициент ( S ) позволяет настроить амплитуду. Однако, поскольку восприятие текстуры (например, резкость) связано с восприятием продолжительности и амплитуды, рекомендуется объединить текстуру и масштабный коэффициент (в процессе проектирования отображения HAL-API).

На рисунке 7 показано сопоставление констант путем увеличения вариации от одной HAL до множества констант API с масштабируемостью амплитуды.

Увеличение варианта 1

Увеличение варианта 2

Рисунок 9. Увеличение вариации с масштабированием амплитуды

Для всех масштабируемых констант API, таких как PRIMITIVE_TICK и PRIMITIVE_CLICK в VibrationEffect.Composition , уровень энергии константы API зависит от параметра float scale запятой, когда константа API объявляется через addPrimitive(int primitiveID, float scale, int delay) . PRIMITIVE_TICK и PRIMITIVE_CLICK могут быть разработаны с четким различием, используя разные константы HAL. Этот подход рекомендуется, если вы хотите добавить вариации к текстуре .

Шаг 3. Оцените оборудование

Оценка оборудования включает определение трех тактильных эффектов, обозначенных как Эффекты 1, 2 и 3 для этой конкретной оценки.

Эффект 1: Предопределенные короткие тактильные константы

Константа VibrationEffect.EFFECT_CLICK — это базовый эффект или общий знаменатель в сопоставлении HAL-API, представленном на шаге 2. Она сопоставлена ​​с наиболее часто используемым эффектом HapticFeedbackConstants.KEYBOARD_PRESS . Оценка этого эффекта помогает определить готовность вашего целевого устройства к четким тактильным ощущениям .

Эффект 2: короткий пользовательский тактильный эффект.

Константа VibrationEffect.createOneShot(20,255) предназначена для пользовательских тактильных эффектов. Для коротких одиночных импульсов рекомендуемый максимальный порог для определения продолжительности — 20 мс. Не рекомендуется использовать одиночный импульс длительностью более 20 мс, поскольку он воспринимается как жужжащая вибрация .

Форма волны короткого пользовательского тактильного эффекта

Рисунок 10. Короткий пользовательский тактильный эффект

Эффект 3: Длинный индивидуальный тактильный эффект с изменением амплитуды.

Константа VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) предназначена для длинных пользовательских эффектов с изменением амплитуды. Способность создавать различные амплитуды для пользовательских тактильных эффектов является одним из показателей оценки возможностей устройства в области богатых тактильных ощущений . Рекомендуемые timings [] и amplitudes []{500, 500} и {128, 255} соответственно, что представляет собой тенденцию увеличения амплитуды от 50% до 100% с частотой дискретизации 500 мс.

Форма волны тактильного эффекта с изменением амплитуды

Рисунок 11. Длинный индивидуальный тактильный эффект с изменением амплитуды.

Чтобы проверить аппаратные возможности управления амплитудой для Эффекта 3, используйте метод Vibrator.hasAmplitudeControl() . Результат должен быть true , чтобы выполнить VibrationEffect.createWaveform с заданной амплитудой.

Блок-схема оценки субъективного тактильного эффекта

Рисунок 12. Субъектная оценка тактильного эффекта 1, 2 и 3.

Проведите субъективную оценку

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

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