Тактильные константы и примитивы определяются HAL-уровнем вибратора и сопоставляются фреймворком Android с публичными API. Выполните следующие проверки, чтобы определить, соответствует ли ваше устройство минимальным требованиям для реализации тактильных функций:
Рисунок 2. Реализация эффектов
Рисунок 3. Реализация примитивов
Реализовать константы
Тактильные константы в VibrationEffect могут использоваться разработчиками через VibrationEffect.createPredefined() . Проверьте статус реализации следующих тактильных констант.
Тактильные константы | Места и краткое содержание |
---|---|
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK | Класс VibrationEffect Тактильные константы в VibrationEffect не содержат понятия событий ввода и не имеют элементов пользовательского интерфейса. Вместо этого константы включают понятие уровней энергии, например, EFFECT_CLICK и EFFECT_HEAVY_CLICK , которые вызываются методом createPredefined() . |
Описанные далее альтернативные вибрации реализуются на устройствах, не поддерживающих константы VibrationEffect
. Рекомендуется обновить эти конфигурации для достижения наилучшей производительности на таких устройствах.
EFFECT_CLICK
Вибрация волнообразной формы, созданная с помощью
VibrationEffect.createWaveform
и таймингов, настроенных вframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Вибрация волнообразной формы, созданная с помощью
VibrationEffect.createWaveform
и таймингов, настроенных вframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.-
EFFECT_DOUBLE_CLICK
Вибрация волнообразной формы, созданная с помощью
VibrationEffect.createWaveform
и таймингов (0, 30, 100, 30).-
EFFECT_TICK
Вибрация волнообразной формы, созданная с помощью
VibrationEffect.createWaveform
и таймингов, настроенных вframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Рисунок 4. Реализация констант обратной связи
Тактильные константы в HapticFeedbackConstants могут использоваться разработчиками через View.performHapticFeedback( ). Проверьте статус следующих общедоступных констант обратной связи.
Тактильные константы | Места и краткое содержание |
---|---|
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() . |
Реализовать примитивы
Тактильные примитивы в VibrationEffect.Composition
имеют масштабируемую интенсивность, которую разработчики могут использовать с помощью addPrimitive(int primitiveId, float scale, int delay)
. Примитивы можно разделить на две категории:
Короткие примитивы: примитивы с короткой длительностью, обычно менее 20 мс. Это
CLICK
,TICK
иLOW_TICK
.Примитивы чириканья: примитивы с переменной амплитудой и частотой, обычно более продолжительные, чем короткие примитивы. К ним относятся
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
иSPIN
.
Короткие примитивы
Короткие примитивы можно описать профилем ускорения выходного сигнала вибромотора. Абсолютная частота варьируется для каждого примитива в зависимости от резонансной частоты привода. Подробнее о настройке оборудования и инструментах для измерения выходного сигнала см. в разделе «Настройка испытательного оборудования» .
Ценной метрикой качества коротких вибраций является отношение импульса к звону (PRR), показанное на рисунке 5. PRR определяется как отношение основного импульса , определяемого сигналом в интервале длительности, где амплитуда уменьшается до 10% от пиковой амплитуды, к звону , определяемому сигналом, где амплитуда уменьшается от 10% от пиковой амплитуды до менее 1% от пиковой амплитуды. Формула для PRR:
Дополнительную информацию о PRR см. в разделе Анализ формы сигнала , а дополнительную информацию об анализе и сравнении результатов см. в разделе Сравнение результатов с использованием карты производительности .
Рисунок 5. Определение соотношения импульса и звонка
Используйте короткие примитивы в качестве обратной связи с пользовательским вводом или воспроизводите их в более длинных композициях для создания мягких текстур. Это означает, что они обычно активируются часто и воспроизводятся в быстрой последовательности. Воспринимаемая интенсивность одного короткого примитива может усугубить интенсивность более сильного эффекта. Поэтому калибруйте одиночный или низкотактовый примитив с помощью более крупной композиции, например, 100 последовательных тиков.
Щелкните примитив
Щелчковый примитив — это мощный, чёткий эффект, обычно работающий на частоте, близкой к резонансной частоте устройства, что позволяет достичь максимальной мощности за короткий промежуток времени. Он мощнее и глубже других примитивов, обеспечивая максимальную интенсивность.
Если возможно, используйте ускоренный режим двигателя в начале и активное торможение в конце, чтобы сократить время нарастания и спада. Для некоторых двигателей использование прямоугольного сигнала вместо синусоидального может обеспечить более быстрое ускорение. На рисунке 6 показан пример выходного профиля ускорения для примитива щелчка:
Рисунок 6. Пример профиля ускорения вывода для примитива щелчка
Параметр | Руководство |
---|---|
Продолжительность | Цель: 12 мс Предел: < 30 мс |
Пиковое ускорение на выходе | Цель: 2 G Предел: > 1 G |
Частота | Примерно на резонансной частоте |
Примитивный тик (светлый тик)
Примитив «тиканье» представляет собой резкий, короткий эффект, обычно действующий в более высоком частотном диапазоне. Этот примитив также можно описать как щелчок средней интенсивности на более высокой частоте с коротким «хвостом». Те же рекомендации применимы для достижения короткого времени нарастания с помощью ускорения двигателя или прямоугольного импульса в начале импульса и активного торможения при смещении. На рисунке 7 показан пример выходного профиля ускорения для примитива «тиканье»:
Рисунок 7. Пример профиля выходного ускорения для примитива тика
Параметр | Руководство |
---|---|
Продолжительность | Цель: 5 мс Предел: < 20 мс |
Пиковое ускорение на выходе | Цель: Половина Предел: от 0,5 G до 1 G |
Частота | Цель: 2x резонансная частота Предел: < 500 Гц |
Низкий тик примитива
Примитив «Low Tick» — это более мягкий и слабый вариант лёгкого тика, работающий в более низком частотном диапазоне для придания эффекту большей насыщенности. Этот примитив также можно описать как щелчок средней интенсивности на более низкой частоте, предназначенный для многократного использования для динамической обратной связи. Те же рекомендации применимы для достижения короткого времени нарастания с помощью перегрузки двигателя или прямоугольного импульса для начального запуска. На рисунке 8 показан пример профиля выходного ускорения для примитива «Low Tick»:
Рисунок 8. Пример профиля ускорения выхода для примитива с малым тиком
Параметр | Руководство |
---|---|
Продолжительность | Цель: 12 мс Предел: < 30 мс |
Пиковое ускорение на выходе | Цель: 1/4 Предел: от 0,2 G до 0,5 G |
Частота | Цель: 2/3 резонансной частоты Предел: < 100 Гц |
Примитивы чириканья
Примитивы ЛЧМ-сигнала можно описать входными сигналами уровня напряжения и частоты вибрации. Ускорение, которое двигатель способен выдавать в различных диапазонах частот, зависит от частотной характеристики привода. Диапазоны частот и уровни напряжения необходимо настраивать для каждого устройства отдельно.
Медленный рост примитива
Медленное нарастание представляет собой медленное увеличение амплитуды и частоты с плавным началом и постепенным увеличением интенсивности вибрации по всей длине развёртки. Это можно реализовать путём последовательного изменения амплитуды и частоты, используя более низкий частотный диапазон, работающий вне резонанса. На рисунке 9 показаны входные параметры и пример профиля выходного ускорения для этой реализации. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации меняется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации меняется со временем.)
Рисунок 9. Входные параметры и пример профиля выходного ускорения для примитива с медленным подъемом
Если частотная характеристика двигателя ограничена (недостаточно сильна вне резонансной частоты), то альтернативным вариантом является синусоидальная развёртка от 1/2 до 1 резонансной частоты. Резонанс двигателя способствует достижению пикового значения сигнала в конце.
Параметр | Руководство |
---|---|
Продолжительность | Цель: 500 мс Допуск: 20 мс |
Пиковое ускорение на выходе | Цель: 0,5 G Предел: от 0,5 G до 1 G |
Частота | Цель: от 1/2 до 2/3 резонансной частоты Альтернатива: 1/2 резонансной частоты |
Быстрый рост примитива
Быстрый подъём представляет собой более быстрое увеличение амплитуды и частоты с плавным началом и постоянным увеличением интенсивности вибрации по всей длине развёртки. Выходное ускорение и целевые значения частоты вибрации должны быть такими же, как и для примитива медленного подъёма, достигаемые за более короткий промежуток времени. На рисунке 10 показаны входные параметры вибрации и пример профиля выходного ускорения для примитива медленного подъёма. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации меняется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации меняется со временем.)
Рисунок 10. Входные параметры и пример профиля выходного ускорения для примитива быстрого подъема
Параметр | Руководство |
---|---|
Продолжительность | Цель: 150 мс Допуск: 20 мс |
Пиковое ускорение на выходе | Цель: такая же, как у Лимит: такой же, как у |
Частота | Цель: такая же, как у Альтернатива: то же, что и |
Быстрое падение примитива
Быстрый спад представляет собой быстрое падение амплитуды и частоты с плавным началом. Можно использовать более высокую частоту в качестве начальной точки при разгоне двигателя для достижения пикового выходного ускорения. Частота должна равномерно снижаться по ходу разгона, даже во время нарастания. На рисунке 11 показаны входные параметры и пример профиля выходного ускорения для данной реализации. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации меняется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации меняется со временем.)
Рисунок 11. Входные параметры и пример выходного профиля ускорения для примитива быстрого падения
Параметр | Руководство |
---|---|
Продолжительность | Цель: 100 мс Допуск: 20 мс |
Пиковое ускорение на выходе | Цель: 1 G Ограничение: от 0,5 G до 2 G |
Частота | Цель: от 2x до 1x резонансной частоты |
Глухой примитивный
Глухой стук — это глухой, низкий, ударный эффект, имитирующий физическое ощущение удара по полому дереву. Этот примитив работает в низкочастотном диапазоне, аналогично примитиву «тихий стук», что обеспечивает большую плотность эффекта. Вы можете реализовать примитив «глухой стук» как нисходящую развертку амплитуды и частоты в более низком диапазоне частот (предпочтительно ниже 100 Гц). На рисунке 12 показаны входные параметры и пример профиля выходного ускорения для этой реализации. (Красная линия соответствует меткам амплитуды слева и отображает изменение амплитуды вибрации во времени. Синяя линия соответствует меткам частоты справа и отображает изменение частоты вибрации во времени.)
Рисунок 12. Входные параметры и пример выходного профиля ускорения для примитива «стук»
Если частотная характеристика двигателя ограничена, альтернативный вариант — начать с сигнала возбуждения полной интенсивности на резонансной частоте и постепенно снижать её до минимально возможной частоты, которую ещё можно воспринять. Такой подход может потребовать увеличения интенсивности сигнала возбуждения на более низкой частоте, чтобы вибрация стала ощутимой.
Параметр | Руководство |
---|---|
Продолжительность | Цель: 300 мс Допуск: 20 мс |
Пиковое ускорение на выходе | Цель: 0,25 G Предел: от 0,2 G до 0,5 G |
Частота | Цель: от 1/2 до 1/3 резонансной частоты Альтернатива: от 1x до 1/2 резонансной частоты |
Спин примитив
Вращение имитирует вращательный импульс быстрого вращения вверх и вниз с небольшим акцентом в центре. Вращение можно реализовать, изменяя амплитуду и частоту независимо друг от друга в противоположных направлениях, а затем двигаясь в обратном направлении. Важно использовать более низкий диапазон частот (предпочтительно менее 100 Гц). На рисунке 13 показаны входные параметры и пример профиля выходного ускорения для этой реализации. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации меняется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации меняется со временем.)
Мы рекомендовали, чтобы примитив вращения вызывался дважды подряд или трижды в композициях, чтобы добиться ощущения вращения и неустойчивости.
Если частотная характеристика двигателя ограничена, альтернативным решением является быстрое синусоидальное изменение частоты от 1/2 до 1 резонансной частоты и обратно. Резонанс двигателя автоматически акцентирует сигнал в середине.
Рисунок 13. Входные параметры и пример выходного профиля ускорения для примитива вращения
Параметр | Руководство |
---|---|
Продолжительность | Цель: 150 мс Допуск: 20 мс |
Пиковое ускорение на выходе | Цель: 0,5 G Предел: от 0,25 G до 0,75 G |
Частота | Цель: от 2/3 до 1/3, затем обратно до 1/2 резонансной частоты Альтернатива: от 2/3 до 1x, затем обратно до 1/2 резонансной частоты |