Mapear constantes entre HAL e API

Esta página apresenta os mapeamentos recomendados entre constantes públicas do HAL e constantes da API. Se o hardware avaliado não implementar as constantes HAL, atualize os padrões de fallback descritos na página Implementar constantes e primitivos para gerar saídas semelhantes. O mapeamento é auxiliado por dois modelos padrão diferentes:

  • Modelo discreto (simples)

    • A amplitude é a variável principal desse modelo. Cada entidade no HAL representa uma amplitude tátil diferente.
    • Esse modelo é um requisito mínimo necessário para implementar a UX táctil básica.
    • Uma UX háptica mais avançada requer hardware e um modelo avançados (modelo contínuo).
  • Modelo contínuo (avançado)

    • Textura e amplitude são as principais variáveis desse modelo. Cada entidade no HAL representa diferentes texturas táteis. A amplitude de cada entidade HAL é controlada pelo fator de escala (S).
    • Esse modelo requer hardware avançado. Se os OEMs quiserem usar uma UX háptica avançada com VibrationEffect.Composition (para aproveitar melhor as APIs de háptica mais recentes), é recomendável implementar o hardware usando esse modelo.

Modelo discreto

É recomendável mapear todas as constantes públicas fornecidas na API com constantes HAL adequadas. Para iniciar esse processo, descubra quantas formas de onda táteis com amplitude discreta o dispositivo pode definir no HAL. Uma pergunta específica estruturada em torno dessa noção é mais ou menos assim: Quantos efeitos hápticos de impulso único com diferenças de amplitude perceptíveis pelo ser humano podem ser definidos no meu smartphone? A resposta a essa pergunta determina o mapeamento.

A definição de constantes do HAL é um processo dependente do hardware. Por exemplo, um smartphone básico pode ter apenas os recursos de hardware para produzir uma única forma de onda háptica. Dispositivos com componentes de hardware mais avançados produzem uma gama mais ampla de níveis de amplitude discretos e podem definir várias formas de onda táteis na HAL. O mapeamento de constantes da API HAL usa a constante HAL (usando a amplitude média como referência) e organiza efeitos mais fortes ou mais fracos a partir daí.

Diagrama do intervalo constante da HAL e das amplitudes
de feedback

Figura 14. Faixa constante de HAL por amplitude

Quando o número de constantes HAL com amplitude discreta é definido, é hora de mapear as constantes HAL e API pelo número de constantes HAL. Esse processo de mapeamento pode segmentar uma única constante da API de impulso em até três grupos discretos de níveis de amplitude. A forma como as constantes da API são segmentadas é baseada em princípios de UX para acompanhar eventos de entrada. Para mais informações, consulte Design de UX de retorno tátil.

Modelo discreto para o mapeamento de constantes
HAL-API

Figura 15. Mapeamento de constante HAL-API: modelo discreto

Se o dispositivo oferecer suporte apenas a duas constantes HAL com amplitudes discretas, considere mesclar as constantes HAL de nível de amplitude Média e Alta. Um exemplo dessa noção na prática seria mapear EFFECT_CLICK e EFFECT_HEAVY_CLICK para a mesma constante HAL, que seria a constante HAL do nível de amplitude média. Se o dispositivo oferecer suporte apenas a uma constante HAL com amplitude discreta, considere mesclar os três níveis em um.

Modelo contínuo

O modelo contínuo com escalonamento de amplitude pode ser aplicado para definir constantes HAL. Um fator de escala (S) pode ser aplicado às constantes HAL (por exemplo, HAL_H0, HAL_H1) para produzir o HAL dimensionado (HAL_H0 x S). Nesse caso, o HAL dimensionado é mapeado para definir constantes da API (HAL_H0 x S1 = H0S1 = EFFECT_TICK), conforme mostrado na Figura 16. Ao usar a escalabilidade de amplitude do modelo contínuo, um dispositivo pode armazenar um pequeno número de constantes HAL com texturas distintas e adicionar variações de amplitude ajustando o fator de escala (S). Os fabricantes de dispositivos podem definir o número de constantes HAL com base no número de texturas táteis diferentes que querem oferecer.

Faixa constante do HAL por textura e
amplitude

Figura 16. Faixa de constante HAL por textura (HAL_H0) e escala de amplitude (S)

Modelo contínuo para mapeamento de constante
HAL-API

Figura 17. Mapeamento de constantes da API HAL: modelo contínuo

No modelo contínuo, diferentes constantes HAL representam diferentes texturas hápticas em vez de diferentes amplitudes. O fator de escala (S) pode configurar a amplitude. No entanto, como a percepção da textura (por exemplo, nitidez) está relacionada à percepção da duração e da amplitude, é recomendável combinar a textura e o fator de escala (no processo de design do mapeamento HAL-API).

A Figura 18 ilustra o mapeamento constante aumentando a variação de um HAL para muitas constantes de API com escalonamento de amplitude.

Aumento da variação
1

Variação crescente
2

Figura 18. Como aumentar a variação com a escalonabilidade de amplitude

Para todas as constantes de API escalonáveis, como PRIMITIVE_TICK e PRIMITIVE_CLICK em VibrationEffect.Composition, o nível de energia da constante da API depende do parâmetro float scale quando a constante da API é declarada por addPrimitive(int primitiveID, float scale, int delay). PRIMITIVE_TICK e PRIMITIVE_CLICK podem ser projetados com uma distinção clara usando diferentes constantes do HAL. Essa abordagem é recomendada se você quiser adicionar variação à textura.