Константы и примитивы тактильных ощущений определяются 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
.Примитивы Chirp: Примитивы с переменной амплитудой и частотой, обычно с большей длительностью, чем короткие примитивы. Это
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 — это более мягкая, слабая версия легкого tick, работающая в диапазоне низких частот для придания большего объема эффекту. Этот примитив также можно описать как щелчок средней интенсивности на низкой частоте, предназначенный для повторного использования для динамической обратной связи. Те же указания применимы для достижения короткого времени нарастания с использованием перегрузки двигателя или прямоугольной волны для начального начала. На рисунке 8 показан пример профиля выходного ускорения для примитива low tick:
Рисунок 8. Пример профиля ускорения выходного сигнала для примитива с малым тиком
Параметр | Руководство |
---|---|
Продолжительность | Цель: 12 мс Предел: < 30 мс |
Пиковое выходное ускорение | Цель: 1/4 Предел: от 0,2 G до 0,5 G |
Частота | Цель: 2/3 резонансной частоты Предел: < 100 Гц |
Примитивы чириканья
Примитивы Chirp можно описать входными сигналами для уровня напряжения и частоты вибрации. Ускорение, которое двигатель может выдавать в различных диапазонах частот, зависит от кривой частотной характеристики привода. Диапазоны частот и уровни напряжения необходимо настраивать для каждого устройства.
Медленный рост примитивный
Медленный подъем — это медленная амплитуда и частота, поднимающаяся вверх с мягким началом и последовательно увеличивающейся интенсивностью вибрации по всей амплитуде. Это может быть реализовано путем последовательной развертки как амплитуды, так и частоты, используя более низкий диапазон частот, который работает вне резонанса. На рисунке 9 показаны входные параметры и пример профиля выходного ускорения для этой реализации. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации изменяется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации изменяется со временем.)
Рисунок 9. Входные параметры и пример выходного профиля ускорения для примитива с медленным подъемом
Если частотная характеристика двигателя ограничена (недостаточно сильна вне резонансной частоты), то альтернативной реализацией является синусоидальная развертка от 1/2x до 1x резонансной частоты. Резонанс двигателя способствует достижению пика сигнала в конце.
Параметр | Руководство |
---|---|
Продолжительность | Цель: 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. Входные параметры и пример выходного профиля ускорения для примитива thud
Если частотная характеристика двигателя ограничена, то альтернативной реализацией является начало с сигнала привода полной интенсивности на резонансной частоте и снижение до минимально возможной частоты, которую все еще можно воспринять. Этот подход может потребовать увеличения интенсивности сигнала привода на более низкой частоте, чтобы вибрация ощущалась.
Параметр | Руководство |
---|---|
Продолжительность | Цель: 300 мс Допуск: 20 мс |
Пиковое выходное ускорение | Цель: 0,25 G Предел: от 0,2 G до 0,5 G |
Частота | Цель: от 1/2 до 1/3 резонансной частоты Альтернатива: от 1x до 1/2 резонансной частоты |
Спин примитивный
Вращение имитирует вращательный импульс быстрого вращения вверх и вниз с небольшим акцентом в центре. Вращение может быть реализовано путем независимого изменения амплитуды и частоты в противоположных направлениях с последующим обратным движением. Важно использовать более низкий диапазон частот (предпочтительно менее 100 Гц). На рисунке 13 показаны входные параметры и пример профиля выходного ускорения для этой реализации. (Красная линия соответствует меткам амплитуды слева и представляет собой то, как амплитуда вибрации изменяется со временем. Синяя линия соответствует меткам частоты справа и представляет собой то, как частота вибрации изменяется со временем.)
Мы рекомендовали вызывать примитив вращения дважды подряд или трижды в композициях, чтобы добиться ощущения вращения и неустойчивости.
Если частотная характеристика двигателя ограничена, альтернативной реализацией является быстрое синусоидальное качание от 1/2x до 1x резонансной частоты и обратно. Резонанс двигателя автоматически придает сигналу акцент в середине.
Рисунок 13. Входные параметры и пример выходного профиля ускорения для примитива спина
Параметр | Руководство |
---|---|
Продолжительность | Цель: 150 мс Допуск: 20 мс |
Пиковое выходное ускорение | Цель: 0,5 G Предел: от 0,25 G до 0,75 G |
Частота | Цель: от 2/3 до 1/3, затем обратно до 1/2 резонансной частоты Альтернатива: от 2/3 до 1x, затем обратно до 1/2 резонансной частоты |