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:
Figura 2. Implementação de efeitos
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
classeAs 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_CLICKVibração de forma de onda criada com
VibrationEffect.createWaveforme os tempos configurados emframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern.EFFECT_HEAVY_CLICKVibração de forma de onda criada com
VibrationEffect.createWaveforme os tempos configurados emframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern.EFFECT_DOUBLE_CLICK
Vibração de forma de onda criada com
VibrationEffect.createWaveforme os tempos (0, 30, 100, 30).EFFECT_TICKVibração de forma de onda criada com
VibrationEffect.createWaveforme os tempos configurados emframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern.
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 classeAs 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,TICKeLOW_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,THUDeSPIN.
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 é:
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.
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:
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:
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 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:
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 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.
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.
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 Limite: igual a |
| Frequência |
Destino: igual a Alternativa: igual a |
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.
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.
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.
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 |