Реализация констант и примитивов

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

Блок-схема реализации тактильной технологии процесс

Рисунок 2. Эффекты реализации

Блок-схема шагов по реализации примитивы

Рисунок 3. Реализация примитивов

Реализация констант

Тактильные константы в VibrationEffect могут использоваться разработчиками с помощью VibrationEffect.createPredependent() . Проверьте статус реализации следующих тактильных констант.

Тактильные константы Локации и резюме
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:

$$ \text{Pulse to ring ratio (PRR)} = 20log_{10}\frac{\text{RMS (main pulse)}}{\text{RMS (ring)}} $$

Дополнительные сведения о PRR см. в разделе Анализ формы волны , а дополнительные сведения об анализе и сравнении результатов см. в разделе Сравнение результатов с помощью карты производительности .

Отношение импульса к звонку

Рисунок 5. Определение соотношения импульса и звонка

Применяйте короткие примитивы в качестве обратной связи с пользователем или используйте их в более длинных композициях для создания мягких текстур. Это означает, что они обычно срабатывают часто и воспроизводятся в быстрой последовательности. Воспринимаемая интенсивность одного короткого примитива может усугубить большую интенсивность эффекта. По этой причине калибруйте одиночный или низкий тактовый примитив с более крупной композицией, например, 100 последовательных тиков.

Нажмите примитив

Примитив щелчка — это сильный, четкий эффект, обычно работающий близко к резонансной частоте устройства для достижения максимальной мощности за короткое время. Он сильнее и глубже, чем другие примитивы, и работает с максимальной интенсивностью.

Если возможно, используйте перегрузку двигателя в начале и активное торможение в конце, чтобы добиться короткого времени нарастания и спада двигателя. Для некоторых двигателей использование прямоугольной волны вместо синусоидальной может обеспечить более быстрое ускорение. На рис. 6 показан пример профиля выходного ускорения для примитива щелчка:

Щелкните примитивный профиль выходного ускорения.

Рисунок 6. Пример профиля выходного ускорения для примитива щелчка

Параметр Руководство
Продолжительность

Цель: 12 мс

Предел: < 30 мс

Пиковое выходное ускорение

Цель: 2 Г

Предел: > 1 Г

Частота Примерно на резонансной частоте

Тик примитивный (светлый тик)

Примитив «тик» — это резкий, короткий эффект, обычно действующий в более высоком частотном диапазоне. Этот примитив также можно описать как щелчок средней интенсивности на более высокой частоте с коротким хвостом. Те же рекомендации применимы для достижения короткого времени нарастания с использованием перегрузки двигателя или прямоугольной волны для начального начала и активного торможения при смещении. На рис. 7 показан пример выходного профиля ускорения для примитива галочки:

Отметьте примитивный профиль ускорения вывода

Рисунок 7. Пример выходного профиля ускорения для примитива тика

Параметр Руководство
Продолжительность

Цель: 5 мс

Предел: < 20 мс

Пиковое выходное ускорение

Цель: половина CLICK , 1 G.

Предел: от 0,5 G до 1 G.

Частота

Цель: удвоение резонансной частоты

Предел: < 500 Гц

Низкий тик примитив

Примитив низкого тика — это более мягкая и слабая версия легкого тика, работающая в более низкочастотном диапазоне, чтобы придать эффекту больше телесности. Этот примитив также можно описать как щелчок средней интенсивности и более низкой частоты, предназначенный для многократного использования для динамической обратной связи. Те же рекомендации применимы для достижения короткого времени нарастания с использованием перегрузки двигателя или прямоугольной волны для начального начала. На рис. 8 показан пример профиля выходного ускорения для примитива с низким тиковым числом:

Профиль ускорения примитивного вывода с низким тиком

Рисунок 8. Пример профиля выходного ускорения для примитива с низким тиком

Параметр Руководство
Продолжительность

Цель: 12 мс

Предел: < 30 мс

Пиковое выходное ускорение

Цель: 1/4 TICK , 0,25 G.

Предел: от 0,2 G до 0,5 G.

Частота

Цель: 2/3 резонансной частоты

Предел: < 100 Гц

Чирикающие примитивы

Примитивы чирпа могут быть описаны входными сигналами уровня напряжения и частоты вибрации. Ускорение, которое двигатель способен развивать в разных диапазонах частот, варьируется в зависимости от частотной характеристики привода. Диапазоны частот и уровни напряжения необходимо регулировать индивидуально для каждого устройства.

Медленный подъем примитива

Медленный подъем представляет собой медленный подъем амплитуды и частоты вверх с мягким началом и постоянным увеличением интенсивности вибрации по всему ходу. Это может быть реализовано путем последовательного изменения амплитуды и частоты с использованием более низкого частотного диапазона, работающего за счет резонанса. На рис. 9 показаны входные параметры и пример профиля выходного ускорения для этой реализации. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации меняется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации меняется со временем.)

Входные параметры и профиль выходного ускорения для примитива медленного нарастания

Рисунок 9. Входные параметры и пример выходного профиля ускорения для примитива медленного нарастания.

Если частотная характеристика двигателя ограничена (недостаточно сильно отличается от его резонансной частоты), то альтернативной реализацией является синусоидальная развертка от 1/2x до 1x резонансной частоты. Резонанс двигателя способствует достижению пика сигнала в конце.

Параметр Руководство
Продолжительность

Цель: 500 мс

Допуск: 20 мс

Пиковое выходное ускорение

Цель: 0,5 Г

Предел: от 0,5 G до 1 G.

Частота

Цель: от 1/2 до 2/3 резонансной частоты.

Альтернатива: 1/2 от резонансной частоты.

Быстроподъемный примитив

Быстрый подъем — это более быстрый подъем амплитуды и частоты вверх с мягким началом и постоянным увеличением интенсивности вибрации по всему диапазону колебаний. Целевые значения выходного ускорения и частоты вибрации должны быть такими же, как и у примитива медленного нарастания, достигаемого за более короткую продолжительность. На рисунке 10 показаны входные параметры вибрации и пример выходного профиля ускорения для примитива медленного подъема. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации меняется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации меняется со временем.)

Входные параметры и выходной профиль ускорения для примитива быстрого подъема

Рисунок 10. Входные параметры и пример выходного профиля ускорения для примитива быстрого подъема.

Параметр Руководство
Продолжительность

Цель: 150 мс

Допуск: 20 мс

Пиковое выходное ускорение

Цель: то же, что и SLOW_RISE

Ограничение: то же, что и SLOW_RISE

Частота

Цель: то же, что и SLOW_RISE

Альтернатива: то же, что и SLOW_RISE

Быстрое падение примитива

Быстрое падение представляет собой быстрое понижение амплитуды и частоты с мягким началом. Вы можете использовать более высокую частоту в качестве начальной точки, пока двигатель набирает обороты для достижения пикового выходного ускорения. Частота должна последовательно уменьшаться по всей развертке, даже во время нарастания. На рис. 11 показаны входные параметры и пример профиля выходного ускорения для этой реализации. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации меняется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации меняется со временем.)

Входные параметры и выходной профиль ускорения для примитива быстрого падения

Рисунок 11. Входные параметры и пример выходного профиля ускорения для примитива быстрого падения.

Параметр Руководство
Продолжительность

Цель: 100 мс

Допуск: 20 мс

Пиковое выходное ускорение

Цель: 1 Г

Предел: от 0,5 G до 2 G.

Частота

Цель: увеличение резонансной частоты в 2–1 раз.

Стук примитивный

Стук — это глухой, низкий, ударный эффект, имитирующий физическое ощущение удара по полому дереву. Этот примитив работает в низкочастотном диапазоне, подобно примитиву low Tick, чтобы придать эффекту большую насыщенность. Вы можете реализовать примитив глухого звука как развертку вниз по амплитуде и частоте в более низком частотном диапазоне (предпочтительно менее 100 Гц). На рис. 12 показаны входные параметры и пример профиля выходного ускорения для этой реализации. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации меняется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации меняется со временем.)

Входные параметры и выходной профиль ускорения для примитива удара

Рисунок 12. Входные параметры и пример выходного профиля ускорения для примитива удара.

Если частотная характеристика двигателя ограничена, альтернативной реализацией является запуск с сигнала возбуждения полной интенсивности на резонансной частоте и падение до минимально возможной частоты, которую все еще можно воспринимать. Этот подход может потребовать увеличения интенсивности сигнала возбуждения на более низкой частоте, чтобы вибрация ощущалась.

Параметр Руководство
Продолжительность

Цель: 300 мс

Допуск: 20 мс

Пиковое выходное ускорение

Цель: 0,25 Г

Предел: от 0,2 G до 0,5 G.

Частота

Цель: от 1/2 до 1/3 резонансной частоты.

Альтернатива: от 1x до 1/2 резонансной частоты.

Спин-примитив

Вращение имитирует вращательный момент быстрого вращения вверх и вниз с небольшим акцентом в центре. Вращение можно реализовать путем независимого изменения амплитуды и частоты в противоположных направлениях с последующим обратным движением. Важно использовать более низкий частотный диапазон (желательно менее 100 Гц). На рис. 13 показаны входные параметры и пример профиля выходного ускорения для этой реализации. (Красная линия соответствует меткам амплитуды слева и показывает, как амплитуда вибрации меняется со временем. Синяя линия соответствует меткам частоты справа и показывает, как частота вибрации меняется со временем.)

Мы рекомендовали вызывать примитив вращения дважды подряд или три раза в композициях, чтобы добиться ощущения вращения и неустойчивости.

Если частотная характеристика двигателя ограничена, альтернативной реализацией является быстрое изменение синусоидальной частоты от 1/2 до 1 резонансной частоты и обратно. Резонанс двигателя автоматически придает сигналу акцент посередине.

Входные параметры и выходной профиль ускорения для примитива вращения

Рисунок 13. Входные параметры и пример выходного профиля ускорения для примитива вращения.

Параметр Руководство
Продолжительность

Цель: 150 мс

Допуск: 20 мс

Пиковое выходное ускорение

Цель: 0,5 Г

Предел: от 0,25 до 0,75 G.

Частота

Цель: от 2/3 до 1/3, затем обратно до 1/2 резонансной частоты.

Альтернатива: от 2/3 до 1x, затем обратно до 1/2 резонансной частоты.