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

Рисунок 1. Сопоставление констант HAL-API: дискретная модель.
Выберите тактильные эффекты
По силе тактильной отдачи ( VibrationEffect ).
EFFECT_CLICK — это лучшее значение для начала определения желаемой интенсивности тактильных ощущений ( VibrationEffect ): это среднее значение между «легкими» тактильными ощущениями EFFECT_TICK и «тяжелыми» тактильными ощущениями EFFECT_HEAVY_CLICK . Начав с EFFECT_CLICK , вы можете увеличить или уменьшить концептуальную энергию, увеличивая интенсивность с помощью EFFECT_HEAVY_CLICK , или уменьшая интенсивность с помощью EFFECT_TICK . Имейте в виду, что EFFECT_DOUBLE_CLICK обеспечивает наибольшую концептуальную энергию, поскольку он повторяется.

Рисунок 2. Настройки интенсивности тактильной обратной связи.
С помощью событий ввода и элементов пользовательского интерфейса ( HapticFeedbackConstants )
Если ваша цель связана с конкретными событиями ввода (например, длительным нажатием или свайпом) или элементами пользовательского интерфейса (например, клавиатурой), найдите предопределенные константы тактильной обратной связи в HapticFeedbackConstants . Название каждой константы указывает на конкретные варианты использования, например, KEYBOARD_PRESS или LONG_PRESS .
Имитация реальных событий нажатия кнопок
Тактильная обратная связь при вводе данных (виртуальные программные кнопки) может имитировать нажатия кнопок с помощью физических объектов (например, механических кнопок).
Входное событие: Поток попарного взаимодействия
Событие «клик» предназначено для имитации поведения механической кнопки, которая нажимается, а затем отпускается . Воспринимаемая энергия механического импульса от нажатия кнопки выше, чем от отпускания кнопки. Следовательно, тактильная обратная связь при нажатии кнопки сильнее, чем тактильная обратная связь при отпускании кнопки.

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

Рисунок 4. Тактильные эффекты, обусловленные возможностью использования внешних факторов.
Имитация виртуальной текстуры в событии ввода жеста
Ввод с помощью жестов (например, перетаскивание или прокрутка) может быть согласован с виртуальными тактильными текстурами во время движения пальца по экрану, а также с визуальными элементами пользовательского интерфейса, например, с генерацией повторяющейся тактильной обратной связи при перемещении пальца по интерфейсу часов с виртуальными элементами в виде галочек.
Эффекты для виртуальных тактильных текстур предназначены для многократного повторения. Это часто приводит к тому, что воспринимаемая энергия оказывается выше амплитуды (когда эффект вызывается без повторения или только один раз ). Поэтому тактильные константы, разработанные для виртуальных тактильных текстур (например, CLOCK_TICK или TEXT_HANDLE_MOVE ), должны быть достаточно тонкими, чтобы обеспечить ощущение движения за счет повторяющихся сигналов.

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

Рисунок 6. Тактильные эффекты в зависимости от настроения.
Избегайте слышимого шума от длительной вибрации.
Чтобы избежать слышимого шума от длительной вибрации при тактильной обратной связи, ускоряйте паттерн плавно, создавая эффект нарастания. Для этого используйте createWaveform(long[] timings, int[] amplitudes, int repeat) .

Рисунок 7. Эффект длительного нарастания вибрации.