На этой странице представлены рекомендуемые соответствия между публичными константами HAL и константами API. Если оцениваемое оборудование не реализует константы HAL, обновите шаблоны отката, описанные на странице «Реализация констант и примитивов», чтобы генерировать аналогичные выходные данные. Соответствие поддерживается двумя различными моделями по умолчанию:
Дискретная модель (простая)
- Амплитуда — ключевая переменная этой модели. Каждый элемент в HAL представляет собой различную тактильную амплитуду.
- Эта модель представляет собой минимальное требование, необходимое для реализации базового тактильного UX.
- Более продвинутый тактильный UX требует современного оборудования и продвинутой модели (непрерывной модели).
Непрерывная модель (расширенная)
- Текстура и амплитуда являются ключевыми переменными этой модели. Каждый объект в HAL представляет собой отдельную тактильную текстуру. Амплитуда каждого объекта HAL контролируется масштабным коэффициентом (
S
). - Эта модель требует современного оборудования. Если OEM-производители хотят использовать продвинутый тактильный пользовательский интерфейс с
VibrationEffect.Composition
(для оптимального использования новейших API тактильных технологий), рекомендуется реализовать своё оборудование с использованием этой модели.
- Текстура и амплитуда являются ключевыми переменными этой модели. Каждый объект в HAL представляет собой отдельную тактильную текстуру. Амплитуда каждого объекта HAL контролируется масштабным коэффициентом (
Дискретная модель
Рекомендуется сопоставить все публичные константы, предоставляемые в API, с соответствующими константами HAL. Для начала выясните, сколько тактильных сигналов с дискретной амплитудой устройство может определить в HAL. Конкретный вопрос, структурированный вокруг этого понятия, выглядит следующим образом: Сколько одиночных тактильных эффектов с воспринимаемой человеком разницей в амплитуде может быть определено в моём телефоне? Ответ на этот вопрос определяет сопоставление.
Определение констант HAL — аппаратно-зависимый процесс. Например, телефон начального уровня может обладать аппаратными возможностями только для создания одного тактильного сигнала. Устройства с более продвинутыми аппаратными компонентами создают более широкий диапазон дискретных уровней амплитуды и могут определять несколько тактильных сигналов в HAL. Сопоставление констант HAL-API берёт константу HAL (используя среднюю амплитуду в качестве базовой линии) и затем распределяет более сильные или слабые эффекты на её основе.
Рисунок 14. Диапазон постоянных HAL по амплитуде
После определения количества констант HAL с дискретной амплитудой необходимо сопоставить константы HAL и API с количеством констант HAL. Этот процесс сопоставления позволяет сегментировать одну импульсную константу API на до трёх дискретных групп уровней амплитуды. Сегментация констант API основана на принципах UX для сопровождения событий ввода. Подробнее см. в разделе «Проектирование UX в тактильной сфере» .
Рисунок 15. Константное отображение 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
), как показано на рисунке 16. Используя масштабируемость амплитуды непрерывной модели, устройство может хранить небольшое количество констант HAL с различными текстурами и добавлять вариации амплитуды, регулируя масштабный коэффициент ( S
). Производители устройств могут определять количество констант HAL в зависимости от того, сколько различных тактильных текстур они хотят предоставить.
Рисунок 16. Диапазон констант HAL по текстуре (HAL_H0) и масштаб амплитуды (S)
Рисунок 17. Константное отображение HAL-API: непрерывная модель
В непрерывной модели различные константы HAL представляют собой различные тактильные текстуры , а не различные амплитуды; масштабный коэффициент ( S
) может определять амплитуду. Однако, поскольку восприятие текстуры (например, резкости) связано с восприятием длительности и амплитуды, рекомендуется комбинировать текстуру и масштабный коэффициент (в процессе проектирования отображения HAL-API).
На рисунке 18 показано отображение констант путем увеличения вариации от одной константы HAL до многих констант API с масштабируемостью амплитуды.
Рисунок 18. Увеличение вариации с масштабируемостью амплитуды
Для всех масштабируемых констант API, таких как PRIMITIVE_TICK
и PRIMITIVE_CLICK
в VibrationEffect.Composition
, уровень энергии константы API зависит от параметра float scale
при объявлении константы API через addPrimitive(int primitiveID, float scale, int delay)
. PRIMITIVE_TICK
и PRIMITIVE_CLICK
можно создавать с чётким разделением, используя разные константы HAL. Этот подход рекомендуется, если вы хотите добавить вариативность к текстуре .