Implementar constantes e primitivos

As constantes e primitivos hápticos são definidos pelo HAL do vibrador e mapeados pelo framework do Android para APIs públicas. Faça estas verificações para determinar se o dispositivo atende aos requisitos mínimos para implementar a resposta tátil:

Fluxograma do processo de implementação
de hápticos

Figura 2. Implementar efeitos

Fluxograma das etapas para implementar
primitivos

Figura 3. Implementação de primitivos

Implementar constantes

As constantes hápticas em VibrationEffect podem ser usadas por desenvolvedores com VibrationEffect.createPredefined(). Confira o status de implementação das seguintes constantes hápticas.

Constantes de retorno tátil Locais e resumos
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK VibrationEffect class
As constantes hápticas em VibrationEffect não incluem nenhuma noção de eventos de entrada e não têm elementos de interface. As constantes incluem a noção de níveis de energia, como EFFECT_CLICK e EFFECT_HEAVY_CLICK, que são chamados por createPredefined().

As vibrações alternativas descritas a seguir são realizadas em dispositivos que não implementam as constantes VibrationEffect. É recomendável atualizar essas configurações para ter o melhor desempenho nesses dispositivos.

  • EFFECT_CLICK

    Vibração de forma de onda criada com VibrationEffect.createWaveform e os tempos configurados em frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern.

  • EFFECT_HEAVY_CLICK

    Vibração de forma de onda criada com VibrationEffect.createWaveform e os tempos configurados em frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern.

    • EFFECT_DOUBLE_CLICK

    Vibração de forma de onda criada com VibrationEffect.createWaveform e as marcações de tempo (0, 30, 100, 30).

  • EFFECT_TICK

    Vibração de forma de onda criada com VibrationEffect.createWaveform e os tempos configurados em frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern.

Fluxograma das etapas para testar o feedback
háptico

Figura 4. Implementar constantes de feedback

As constantes hápticas em HapticFeedbackConstants podem ser usadas por desenvolvedores com View.performHapticFeedback(). Verifique o status das seguintes constantes de feedback público.

Constantes de retorno tátil Locais e resumos
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 Classe HapticFeedbackConstants
As constantes hápticas em HapticFeedbackConstants ajudam eventos de entrada com determinados elementos da interface, como KEYBOARD_PRESS e KEYBOARD_RELEASE, que são chamados por performHapticFeedback().

Implementar primitivos

As primitivas hápticas em VibrationEffect.Composition têm intensidade escalonável que os desenvolvedores podem usar com addPrimitive(int primitiveId, float scale, int delay). As primitivas podem ser divididas em duas categorias:

  • Primitivos curtas:primitivos com curta duração, geralmente menos de 20 ms. São CLICK, TICK e LOW_TICK.

  • Primitivos de chirp:primitivos com amplitude e frequência variadas, geralmente com uma duração maior do que as primitivas curtas. São eles: SLOW_RISE, QUICK_RISE, QUCK_FALL, THUD e SPIN.

Primitivos curtos

Primitivos curtas podem ser descritas pelo perfil de aceleração da saída do motor vibratório. A frequência absoluta usada varia para cada primitiva, dependendo da frequência de ressonância do atuador. Consulte Configurar o equipamento de teste para mais informações sobre a configuração de hardware e ferramentas para medir a saída.

Uma métrica de qualidade valiosa para vibrações curtas é a proporção pulso-toque (PRR), mostrada na Figura 5. A PRR é definida como a proporção entre o pulso principal, definido pelo sinal dentro da janela de duração em que a amplitude diminui para 10% da amplitude de pico, e o pulso de toque, definido pelo sinal em que a amplitude diminui de 10% da amplitude de pico para menos de 1% da amplitude de pico. A fórmula para PRR é:

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

Para mais informações sobre a PRR, consulte Analisar a forma de onda e, para mais informações sobre como analisar e comparar resultados, consulte Comparar resultados usando o mapa de desempenho.

Proporção de pulso para toque

Figura 5. Definição da proporção de pulso por toque

Aplique primitivos curtos como feedback de entrada do usuário ou reproduzidos em composições mais longas para criar texturas suaves. Isso significa que eles geralmente são acionados com frequência e reproduzidos em rápida sucessão. A intensidade percebida de uma única primitiva curta pode aumentar a intensidade do efeito maior. Por isso, calibre um único tique ou uma primitiva de tique baixo com uma composição maior, por exemplo, 100 tiques consecutivos.

Clique primitivo

O clique primitivo é um efeito forte e nítido que geralmente opera perto da frequência de ressonância de um dispositivo para atingir a saída máxima em um curto período. Ela é mais forte e profunda do que as outras primitivas, funcionando na intensidade máxima.

Se disponível, use o overdrive do motor no início e a frenagem ativa no final para reduzir o tempo de subida e queda do motor. Para alguns motores, usar uma onda quadrada em vez de uma senoidal pode acelerar mais. A Figura 6 mostra um exemplo de perfil de aceleração de saída para a primitiva de clique:

Clique no perfil de aceleração da saída primitiva

Figura 6. Exemplo de perfil de aceleração de saída para primitiva de clique

Parâmetro Diretriz
Duração

Meta: 12 ms

Limite: < 30 ms

Aceleração da taxa de saída máxima

Destino: 2 G

Limite: > 1 G

Frequência Aproximadamente na frequência de ressonância

Primitivo de marcação (marcação clara)

O tique é um efeito curto e nítido que geralmente opera em uma faixa de frequência mais alta. Essa primitiva também pode ser descrita como um clique de intensidade média em uma frequência mais alta com uma cauda curta. A mesma orientação se aplica para atingir um tempo de subida curto usando overdrive do motor ou uma onda quadrada para o início inicial e frenagem ativa no deslocamento. A Figura 7 mostra um exemplo de perfil de aceleração de saída para a primitiva de tique:

Perfil de aceleração de saída primitiva de tique

Figura 7. Exemplo de perfil de aceleração de saída para primitiva de tique

Parâmetro Diretriz
Duração

Meta: 5 ms

Limite: < 20 ms

Aceleração da taxa de saída máxima

Meta: metade de CLICK, 1 G

Limite: entre 0,5 G e 1 G

Frequência

Meta: frequência de ressonância 2x

Limite: < 500 Hz

Primitiva de tique baixo

O tique-taque baixo é uma versão mais suave e fraca de um tique-taque leve, operando em uma faixa de frequência mais baixa para dar mais corpo ao efeito. Essa primitiva também pode ser descrita como um clique de intensidade média em uma frequência menor, destinado a ser usado repetidamente para feedback dinâmico. A mesma orientação se aplica para atingir um tempo de aumento curto usando overdrive do motor ou uma onda quadrada para o início inicial. A Figura 8 mostra um exemplo de perfil de aceleração de saída para a primitiva de tique baixo:

Perfil de aceleração de saída primitiva de tique baixo

Figura 8. Exemplo de perfil de aceleração de saída para primitiva de tique baixo

Parâmetro Diretriz
Duração

Meta: 12 ms

Limite: < 30 ms

Aceleração da taxa de saída máxima

Meta: 1/4 de um TICK, 0,25 G

Limite: entre 0,2 G e 0,5 G

Frequência

Meta: 2/3 da frequência de ressonância

Limite: < 100 Hz

Primitivos do Chirp

As primitivas de chirp podem ser descritas pelos sinais de entrada para nível de tensão e frequência de vibração. A aceleração que o motor consegue gerar em diferentes faixas de frequência varia de acordo com a curva de resposta de frequência do atuador. As faixas de frequência e os níveis de tensão precisam ser ajustados em cada dispositivo.

Primitiva de aumento lento

A elevação lenta é uma varredura lenta de amplitude e frequência para cima com início suave e intensidade de vibração consistentemente crescente em toda a varredura. Ele pode ser implementado com uma varredura consistente da amplitude e da frequência, usando um intervalo de frequência mais baixo que opera fora da ressonância. A Figura 9 mostra os parâmetros de entrada e um exemplo de perfil de aceleração de saída para essa implementação. A linha vermelha corresponde aos rótulos de amplitude à esquerda e representa como a amplitude de vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência de vibração varia com o tempo.

Parâmetros de entrada e perfil de aceleração de saída para primitiva de aumento lento

Figura 9. Parâmetros de entrada e exemplo de perfil de aceleração de saída para primitivo de aumento lento

Se a resposta de frequência do motor for limitada (não for forte o suficiente fora da frequência de ressonância), uma implementação alternativa será uma varredura senoidal de 1/2x a 1x a frequência de ressonância. A ressonância do motor contribui para alcançar o pico do sinal no final.

Parâmetro Diretriz
Duração

Meta: 500 ms

Tolerância: 20 ms

Aceleração da taxa de saída máxima

Meta: 0,5 G

Limite: entre 0,5 G e 1 G

Frequência

Alvo: 1/2 a 2/3 da frequência de ressonância

Alternativa: 1/2 da frequência de ressonância

Primitiva de aumento rápido

A elevação rápida é uma varredura mais rápida de amplitude e frequência para cima com início suave e intensidade de vibração cada vez maior em toda a varredura. As metas de aceleração e frequência de vibração de saída precisam ser as mesmas da primitiva de aumento lento, alcançadas em uma duração menor. A Figura 10 mostra os parâmetros de entrada de vibração e um exemplo de perfil de aceleração de saída para a primitiva de aumento lento. A linha vermelha corresponde aos rótulos de amplitude à esquerda e representa como a amplitude de vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência de vibração varia com o tempo.

Parâmetros de entrada e perfil de aceleração de saída para primitiva de aumento rápido

Figura 10. Parâmetros de entrada e exemplo de perfil de aceleração de saída para primitivo de aumento rápido

Parâmetro Diretriz
Duração

Destino: 150 ms

Tolerância: 20 ms

Aceleração da taxa de saída máxima

Meta: igual a SLOW_RISE

Limite: igual a SLOW_RISE

Frequência

Meta: igual a SLOW_RISE

Alternativa: igual a SLOW_RISE

Primitiva de queda rápida

A queda rápida é uma varredura rápida para baixo de amplitude e frequência com um início suave. Você pode usar uma frequência mais alta como ponto de partida enquanto o motor está aumentando para atingir a aceleração máxima de saída. A frequência precisa diminuir de forma consistente em toda a varredura, mesmo durante o tempo de aumento. A Figura 11 mostra os parâmetros de entrada e um exemplo de perfil de aceleração de saída para essa implementação. A linha vermelha corresponde aos rótulos de amplitude à esquerda e representa como a amplitude de vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência de vibração varia com o tempo.

Parâmetros de entrada e perfil de aceleração de saída para primitiva de queda rápida

Figura 11. Parâmetros de entrada e exemplo de perfil de aceleração de saída para primitivo de queda rápida

Parâmetro Diretriz
Duração

Destino: 100 ms

Tolerância: 20 ms

Aceleração da taxa de saída máxima

Meta: 1 G

Limite: entre 0,5 G e 2 G

Frequência

Meta: 2 a 1 vez a frequência de ressonância

Primitiva Thud

O som é um efeito percussivo, baixo e com batidas que simula a sensação física de bater em madeira oca. Essa primitiva opera em uma faixa de baixa frequência, semelhante à primitiva de tique baixo, para dar mais corpo ao efeito. É possível implementar a primitiva de baque como uma varredura descendente de amplitude e frequência em uma faixa de frequência mais baixa (de preferência, menos de 100 Hz). A Figura 12 mostra os parâmetros de entrada e um exemplo de perfil de aceleração de saída para essa implementação. A linha vermelha corresponde aos rótulos de amplitude à esquerda e representa como a amplitude de vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência de vibração varia com o tempo.

Parâmetros de entrada e perfil de aceleração de saída para a primitiva de impacto

Figura 12. Parâmetros de entrada e exemplo de perfil de aceleração de saída para primitivo de impacto

Se a resposta de frequência do motor for limitada, uma implementação alternativa será começar com um sinal de acionamento de intensidade total na frequência de ressonância e diminuir para a menor frequência possível que ainda possa ser percebida. Essa abordagem pode exigir um aumento na intensidade do sinal de acionamento na frequência mais baixa para que a vibração seja sentida.

Parâmetro Diretriz
Duração

Meta: 300 ms

Tolerância: 20 ms

Aceleração da taxa de saída máxima

Meta: 0,25 G

Limite: entre 0,2 G e 0,5 G

Frequência

Meta: 1/2 a 1/3 da frequência de ressonância

Alternativa: 1x a 1/2 da frequência de ressonância

Primitiva de rotação

A rotação simula um movimento rápido para cima e para baixo com um leve destaque no centro. A rotação pode ser implementada varrendo a amplitude e a frequência de forma independente, em direções opostas e seguida pelo movimento inverso. É importante usar uma faixa de frequência mais baixa (de preferência, menos de 100 Hz). A Figura 13 mostra os parâmetros de entrada e um exemplo de perfil de aceleração de saída para essa implementação. A linha vermelha corresponde aos rótulos de amplitude à esquerda e representa como a amplitude de vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência de vibração varia com o tempo.

Recomendamos que a primitiva de rotação seja chamada duas vezes seguidas ou três vezes em composições para criar uma sensação de rotação e instabilidade.

Se a resposta de frequência do motor for limitada, uma implementação alternativa será fazer uma varredura senoidal rápida de 1/2x a 1x a frequência de ressonância e voltar. A ressonância do motor acentua automaticamente o sinal no meio.

Parâmetros de entrada e perfil de aceleração de saída para a primitiva de rotação

Figura 13. Parâmetros de entrada e exemplo de perfil de aceleração de saída para primitiva de rotação

Parâmetro Diretriz
Duração

Destino: 150 ms

Tolerância: 20 ms

Aceleração da taxa de saída máxima

Meta: 0,5 G

Limite: entre 0,25 G e 0,75 G

Frequência

Meta: 2/3 a 1/3 e depois volta para 1/2 da frequência de ressonância

Alternativa: 2/3 a 1x, depois volta para 1/2 da frequência de ressonância