Производители устройств обычно считаются владельцами частных активов, созданных для каждого устройства. Таким образом, их инженерные усилия часто сосредоточены на каждом устройстве ; практически никаких усилий не требуется для согласованности других устройств в экосистеме.
Напротив, разработчики стремятся создавать приложения, которые работают на всех телефонах Android в экосистеме, независимо от технических характеристик каждого устройства. Эта разница в подходе может вызвать проблему фрагментации, например, аппаратные возможности некоторых телефонов не соответствуют ожиданиям, установленным разработчиками приложений. Таким образом, если тактильные API работают на некоторых телефонах Android, но не работают на других, в результате получается несогласованная экосистема. Вот почему конфигурация оборудования играет решающую роль в обеспечении того, чтобы производители могли внедрять тактильные API Android на каждом устройстве.
На этой странице представлен пошаговый контрольный список для настройки соответствия оборудования для наилучшего использования API тактильных ощущений Android.
На рисунке ниже показано создание общих знаний между производителями устройств и разработчиками, что является важным шагом в создании целостной экосистемы.
Рисунок 1. Наращивание знаний между производителями устройств и разработчиками
Контрольный список реализации тактильных ощущений
- Список констант для реализации тактильных ощущений.
Константы сопоставления между HAL и API
- Сопоставление рекомендаций между общедоступными константами API (названными заполнителями в фреймворке) и константами HAL, которые реализуют заполнители.
- См. Принципы проектирования, чтобы определить рекомендуемое сопоставление , чтобы узнать больше об этом процессе.
- Инструкции по целевым тактильным эффектам. Используйте эти инструкции для быстрой проверки вашего оборудования.
Ниже мы рассмотрим каждый из этих шагов более подробно.
Шаг 1: Реализуйте константы
Выполните эти проверки, чтобы определить, соответствует ли ваше устройство минимальным требованиям для реализации тактильных ощущений.
Рисунок 2. Реализация эффектов
Рисунок 3. Реализация примитивов
Проверьте статус реализации следующих тактильных констант.
Тактильные константы | Места и резюме |
---|---|
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK | Класс VibrationEffect Тактильные константы в VibrationEffect не включают понятие входных событий и не имеют элементов пользовательского интерфейса. Константы вместо этого включают понятие уровней энергии, таких как EFFECT_CLICK и EFFECT_HEAVY_CLICK , которые вызываются createPredefined() . |
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD | Класс VibrationEffect.Composition Тактильные константы в VibrationEffect.Composition могут иметь масштабируемую интенсивность, которая вызывается с помощью addPrimitive(int primitiveId, float scale, int delay) . |
Описанные ниже альтернативные вибрации будут выполняться на устройствах, не реализующих константы 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 Тактильные константы в HapticFeedbackConstants помогают событиям ввода с определенными элементами пользовательского интерфейса, такими как KEYBOARD_PRESS и KEYBOARD_RELEASE , которые вызываются с помощью performHapticFeedback() . |
Шаг 2. Сопоставьте константы между HAL и API
На шаге 2 представлены рекомендуемые сопоставления между общедоступными константами HAL и константами API. Если аппаратное обеспечение, оцененное на шаге 1, не реализует константы HAL, то шаг 2 следует использовать для обновления резервных шаблонов, описанных на шаге 1, чтобы получить аналогичные выходные данные. Отображение поддерживается двумя разными моделями по умолчанию.
Дискретная модель (простая)
- Амплитуда является ключевой переменной этой модели. Каждый объект в HAL представляет собой различную тактильную амплитуду.
- Эта модель является минимальным требованием, необходимым для реализации базового тактильного UX.
- Более продвинутый тактильный UX требует продвинутого оборудования и продвинутой модели (непрерывной модели).
Непрерывная модель (расширенная)
- Текстура и амплитуда являются ключевыми переменными этой модели. Каждый объект в HAL представляет разные тактильные текстуры. Амплитуда каждого объекта HAL контролируется коэффициентом масштабирования (
S
). - Для этой модели требуется современное оборудование. Если OEM-производители хотят использовать расширенный тактильный UX с
VibrationEffect.Composition
(для наилучшего использования последних API-интерфейсов тактильных ощущений), рекомендуется реализовать свое оборудование с использованием этой модели.
- Текстура и амплитуда являются ключевыми переменными этой модели. Каждый объект в HAL представляет разные тактильные текстуры. Амплитуда каждого объекта HAL контролируется коэффициентом масштабирования (
Дискретная модель
Рекомендуется сопоставлять все общедоступные константы, предоставляемые в API, с соответствующими константами HAL. Чтобы начать этот процесс, выясните, сколько тактильных сигналов с дискретной амплитудой устройство может определить в HAL. Конкретный вопрос, построенный вокруг этого понятия, выглядит следующим образом: сколько одноимпульсных тактильных эффектов с воспринимаемой человеком разницей амплитуд можно определить в моем телефоне? Ответ на этот вопрос определяет отображение.
Определение констант HAL зависит от аппаратного обеспечения. Например, телефон начального уровня может иметь только аппаратные возможности для создания одной тактильной волны. Устройства с более совершенными аппаратными компонентами производят более широкий диапазон дискретных уровней амплитуды и могут определять несколько тактильных сигналов в HAL. Отображение констант HAL-API берет константу HAL (используя среднюю амплитуду в качестве базовой линии), а затем упорядочивает более сильные или слабые эффекты оттуда.
Рисунок 5. Диапазон констант HAL по амплитуде
Когда количество констант HAL с дискретной амплитудой определено, пришло время отобразить константы HAL и API по количеству констант HAL. Этот процесс отображения может сегментировать одну константу API импульса на три дискретные группы уровней амплитуды. Способ сегментации констант API основан на принципах UX для сопровождения входных событий. Дополнительные сведения см. в разделе «Дизайн тактильного интерфейса пользователя» .
Рисунок 6. Отображение констант HAL-API: дискретная модель
Если ваше устройство поддерживает только две константы HAL с дискретными амплитудами, рассмотрите возможность объединения констант HAL среднего и высокого уровня амплитуды. Примером этого понятия на практике может быть сопоставление EFFECT_CLICK
и EFFECT_HEAVY_CLICK
с одной и той же константой HAL, которая будет константой HAL уровня средней амплитуды. Если ваше устройство поддерживает только одну константу HAL с дискретной амплитудой, рассмотрите возможность объединения всех трех уровней в один.
Непрерывная модель
Непрерывная модель с масштабируемостью по амплитуде может применяться для определения констант HAL. К константам HAL (например, HAL_H0
, HAL_H1
) можно применить масштабный коэффициент ( S
) для получения масштабированного HAL ( HAL_H0
x S
). В этом случае масштабированный HAL отображается для определения констант API ( HAL_H0
x S1
= H0S1
= EFFECT_TICK
), как показано на рисунке 7. Используя амплитудную масштабируемость непрерывной модели, устройство может хранить небольшое количество констант HAL с характерными текстурами. и добавьте вариации амплитуды, отрегулировав коэффициент масштабирования ( S
). Производители устройств могут определять количество констант HAL в зависимости от того, сколько различных тактильных текстур они хотят предоставить.
Рисунок 7. Диапазон констант HAL по текстуре (HAL_H0) и масштабу амплитуды (S)
Рисунок 8. Отображение констант HAL-API: непрерывная модель
В непрерывной модели разные константы HAL представляют разные тактильные текстуры , а не разные амплитуды; масштабный коэффициент ( S
) может настроить амплитуду. Однако, поскольку восприятие текстуры (например, резкость) связано с восприятием продолжительности и амплитуды, рекомендуется комбинировать текстуру и коэффициент масштабирования (в процессе проектирования отображения HAL-API).
Рисунок 7 иллюстрирует отображение констант путем увеличения вариации от одной HAL до множества констант API с масштабируемостью амплитуды.
Рисунок 9. Увеличение вариации с масштабируемостью амплитуды
Примечание. На приведенном выше рисунке показан конкретный пример сопоставления констант, поэтому соглашения об именах являются гипотетическими. Выполнение этого процесса уникально для каждого производителя устройств.
Для всех масштабируемых констант API, таких как PRIMITIVE_TICK
и PRIMITIVE_CLICK
в VibrationEffect.Composition
, уровень энергии константы API зависит от параметра float scale
с плавающей запятой, когда константа API объявлена через addPrimitive(int primitiveID, float scale, int delay)
. PRIMITIVE_TICK
и PRIMITIVE_CLICK
могут быть разработаны с четким различием, используя разные константы HAL. Этот подход рекомендуется, если вы хотите добавить вариации к текстуре .
Шаг 3: Оцените аппаратное обеспечение
Аппаратная оценка включает в себя определение трех тактильных эффектов, помеченных как Эффекты 1, 2 и 3 для этой конкретной оценки.
Эффект 1: Предопределенные короткие тактильные константы
Константа VibrationEffect.EFFECT_CLICK
— это базовый эффект или общий знаменатель в отображении HAL-API, представленном на шаге 2. Оно сопоставлено с наиболее часто используемым эффектом, HapticFeedbackConstants.KEYBOARD_PRESS
. Оценка этого эффекта помогает определить готовность вашего целевого устройства к четким тактильным ощущениям .
Эффект 2: короткий настраиваемый тактильный эффект
Константа VibrationEffect.createOneShot(20,255)
предназначена для пользовательских тактильных эффектов. Для коротких одиночных настраиваемых импульсов рекомендуемым максимальным пороговым значением для определения продолжительности является 20 мс. Одиночный импульс продолжительностью более 20 мс не рекомендуется, так как он воспринимается как шумная вибрация .
Рисунок 10. Короткий пользовательский тактильный эффект
Эффект 3: Длинный настраиваемый тактильный эффект с изменением амплитуды
Константа VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
предназначена для длинных пользовательских эффектов с изменением амплитуды. Способность создавать различные амплитуды для настраиваемых тактильных эффектов является одним из показателей, позволяющих оценить возможности устройства в отношении насыщенных тактильных ощущений . Рекомендуемые timings []
и amplitudes []
равны {500, 500}
и {128, 255}
соответственно, что представляет тенденцию к увеличению амплитуды от 50% до 100% с частотой дискретизации 500 мс.
Рис. 11. Длительный пользовательский тактильный эффект с изменением амплитуды
Чтобы проверить аппаратные возможности управления амплитудой для Эффекта 3, используйте метод Vibrator.hasAmplitudeControl()
. Результат должен быть true
, чтобы выполнить VibrationEffect.createWaveform
с разной амплитудой, как предполагалось.
Рисунок 12. Оценка испытуемым тактильного эффекта 1, 2 и 3
Выполнение субъективной оценки
Для быстрой проверки согласованности сначала выполните субъективную оценку. Целью субъективной оценки является наблюдение за амплитудой тактильных эффектов, чтобы определить, может ли устройство генерировать тактильные ощущения с воспринимаемыми человеком амплитудами.
Конкретный вопрос, построенный вокруг этого понятия, выглядит следующим образом: может ли устройство производить легко воспринимаемые тактильные эффекты для пользователей, как и ожидалось? Ответ на этот вопрос поможет вам избежать неудачных тактильных ощущений , в том числе незаметных тактильных ощущений, которые пользователи не могут почувствовать, или непреднамеренных тактильных ощущений, когда сигналы не создают шаблоны, как предполагалось.