Константы сопоставления между HAL и API

На этой странице представлены рекомендуемые сопоставления между публичными константами HAL и константами API. Если оцениваемое оборудование не реализует константы HAL, обновите шаблоны отката, описанные на странице «Реализация констант и примитивов», чтобы генерировать аналогичные выходные данные. Сопоставление осуществляется с помощью двух различных моделей по умолчанию:

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

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

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

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

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

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

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

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

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

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

Рисунок 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 на основе того, сколько различных тактильных текстур они хотят предоставить.

Постоянный диапазон HAL по текстуре и амплитуде

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

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

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

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

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

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

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

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

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