Implementar constantes e primitivos

As constantes e primitivas táteis são definidas pelo HAL do vibrador e mapeadas pelo framework do Android para APIs públicas. Realize estas verificações para determinar se o dispositivo atende aos requisitos mínimos para implementar o retorno tátil:

Fluxograma do processo de implementação de retorno tátil

Figura 2. Implementação de efeitos

Fluxograma das etapas para implementar
primitivos

Figura 3. Implementação de primitivas

Implementar constantes

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

Constantes táteis Locais e resumos
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK VibrationEffect classe
As constantes táteis 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 chamadas por createPredefined().

As vibrações alternativas descritas a seguir são realizadas em dispositivos que não implementam as constantes VibrationEffect. Recomendamos 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 os tempos (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. Implementação de constantes de feedback

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

Constantes táteis 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 HapticFeedbackConstants classe
As constantes táteis em HapticFeedbackConstants ajudam eventos de entrada com determinados elementos de interface, como KEYBOARD_PRESS e KEYBOARD_RELEASE, que são chamados por performHapticFeedback().

Implementar primitivas

As primitivas táteis 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:

  • Primitivas curtas: primitivas com duração curta, geralmente menor que 20 ms. São elas: CLICK, TICK e LOW_TICK.

  • Primitivas de chirp:primitivas com amplitude e frequência variáveis, geralmente com uma duração maior do que as primitivas curtas. São elas: SLOW_RISE, QUICK_RISE, QUCK_FALL, THUD e SPIN.

Primitivas curtas

As primitivas curtas podem ser descritas pelo perfil de aceleração da saída do motor do vibrador. 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 de pulso para toque (PRR, na sigla em inglês), 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 por toque

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

Aplique primitivas curtas como um feedback de entrada do usuário ou reproduzidas em composições mais longas para criar texturas suaves. Isso significa que elas geralmente são acionadas com frequência e reproduzidas em rápida sucessão. A intensidade percebida de uma única primitiva curta pode aumentar a intensidade do efeito maior. Por esse motivo, calibre uma única primitiva de toque ou toque baixo com uma composição maior, por exemplo, 100 toques consecutivos.

Primitiva de clique

A primitiva de clique é 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 uma curta duração. É mais forte e profundo do que as outras primitivas, com desempenho na intensidade máxima.

Se disponível, use a sobrecarga do motor no início e a frenagem ativa no final para conseguir um tempo de subida e queda do motor curto. Para alguns motores, o uso de uma onda quadrada em vez de uma onda senoidal pode conseguir uma aceleração mais rápida. 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 de saída primitiva

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

Parâmetro Diretriz
Duração

Destino: 12 ms

Limite: < 30 ms

Aceleração de saída de pico

Destino: 2 G

Limite: > 1 G

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

Primitiva de toque (toque leve)

A primitiva de toque é um efeito nítido e curto 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 conseguir um tempo de subida curto usando a sobrecarga do motor ou uma onda quadrada para o início inicial e a frenagem ativa no deslocamento. A Figura 7 mostra um exemplo de perfil de aceleração de saída para a primitiva de toque:

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

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

Parâmetro Diretriz
Duração

Destino: 5 ms

Limite: < 20 ms

Aceleração de saída de pico

Destino: metade de CLICK, 1 G

Limite: entre 0,5 G e 1 G

Frequência

Destino: 2x frequência de ressonância

Limite: < 500 Hz

Primitiva de toque baixo

A primitiva de toque baixo é uma versão mais suave e fraca de um toque 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 mais baixa, destinado a ser usado repetidamente para feedback dinâmico. A mesma orientação se aplica para conseguir um tempo de subida curto usando a sobrecarga 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 toque 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 toque baixo

Parâmetro Diretriz
Duração

Destino: 12 ms

Limite: < 30 ms

Aceleração de saída de pico

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

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

Frequência

Destino: 2/3 frequência de ressonância

Limite: < 100 Hz

Primitivas de 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 pode produzir em diferentes faixas de frequência varia dependendo da curva de resposta de frequência do atuador. As faixas de frequência e os níveis de tensão precisam ser ajustados por dispositivo.

Primitiva de subida lenta

A subida 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. Ela pode ser implementada por uma varredura consistente da amplitude e da frequência, usando uma faixa de frequência mais baixa 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 primitiva de subida lenta

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 atingir o pico do sinal no final.

Parâmetro Diretriz
Duração

Destino: 500 ms

Tolerância: 20 ms

Aceleração de saída de pico

Destino: 0,5 G

Limite: entre 0,5 G e 1 G

Frequência

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

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

Primitiva de subida rápida

A subida rápida é uma varredura mais rápida de amplitude e frequência para cima com início suave e intensidade de vibração consistentemente crescente em toda a varredura. Os destinos de aceleração de saída e frequência de vibração precisam ser os mesmos da primitiva de subida lenta, alcançados em uma duração mais curta. 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 subida lenta. 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 primitiva de subida rápida

Parâmetro Diretriz
Duração

Destino: 150 ms

Tolerância: 20 ms

Aceleração de saída de pico

Destino: igual a SLOW_RISE

Limite: igual a SLOW_RISE

Frequência

Destino: igual a SLOW_RISE

Alternativa: igual a SLOW_RISE

Primitiva de queda rápida

A queda rápida é uma varredura rápida de amplitude e frequência para baixo 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 de saída de pico. A frequência precisa diminuir consistentemente em toda a varredura, mesmo durante o tempo de subida. 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 primitiva de queda rápida

Parâmetro Diretriz
Duração

Destino: 100 ms

Tolerância: 20 ms

Aceleração de saída de pico

Destino: 1 G

Limite: entre 0,5 G e 2 G

Frequência

Destino: 2x a 1x a frequência de ressonância

Primitiva de baque

O baque é um efeito percussivo, baixo e forte que simula a sensação física de bater em madeira oca. Essa primitiva opera em uma faixa de frequência baixa, semelhante à primitiva de toque baixo, para dar mais corpo ao efeito. Você pode implementar a primitiva de baque como uma varredura de amplitude e frequência para baixo em uma faixa de frequência mais baixa (de preferência menor que 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 primitiva de baque

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 cair para a frequência mais baixa possível que ainda possa ser percebida. Essa abordagem pode exigir um aumento da intensidade do sinal de acionamento na frequência mais baixa para que a vibração seja sentida.

Parâmetro Diretriz
Duração

Destino: 300 ms

Tolerância: 20 ms

Aceleração de saída de pico

Destino: 0,25 G

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

Frequência

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

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

Primitiva de giro

O giro simula um momento de rotação rápida para cima e para baixo com um leve acento no centro. O giro pode ser implementado varrendo a amplitude e a frequência de forma independente, em direções opostas e seguidas pelo movimento inverso. É importante usar uma faixa de frequência mais baixa (de preferência menor que 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 giro seja chamada duas vezes em sucessão ou três vezes em composições para conseguir 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 dá automaticamente ao sinal um acento 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 giro

Parâmetro Diretriz
Duração

Destino: 150 ms

Tolerância: 20 ms

Aceleração de saída de pico

Destino: 0,5 G

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

Frequência

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

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