As constantes e primitivas táteis são definidas pelo HAL do vibrador e mapeadas pelo framework do Android para APIs públicas. Execute estas verificações para determinar se o dispositivo atende aos requisitos mínimos para implementar a resposta tátil:
Figura 2. Implementar efeitos
Figura 3. Implementação de primitivos
Implementar constantes
As constantes hápticas em VibrationEffect podem ser usadas pelos desenvolvedores com VibrationEffect.createPredefined(). Verifique 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 |
A classe
VibrationEffect
As constantes hápticas em VibrationEffect não incluem nenhuma
noção de eventos de entrada e não têm elementos de IU. 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
. Recomendamos atualizar essas configurações para
ter um melhor desempenho nesses dispositivos.
EFFECT_CLICK
Vibração de forma de onda criada com
VibrationEffect.createWaveform
e os tempos configurados emframeworks/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 emframeworks/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 emframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Figura 4. Implementar constantes de feedback
As constantes de toque em HapticFeedbackConstants podem ser usadas pelos desenvolvedores usando 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 auxiliam eventos de entrada
com determinados elementos da IU, como KEYBOARD_PRESS e
KEYBOARD_RELEASE , que são chamados por
performHapticFeedback() . |
Implementar primitivos
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 menos de 20 ms. São elas
CLICK
,TICK
eLOW_TICK
.Primitivas de trinado:primitivas com amplitude e frequência variáveis, geralmente com uma duração maior do que as primitivas curtas. Eles são
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
eSPIN
.
Primitivos curtos
Primitivas curtas podem ser descritas pelo perfil de aceleração de saída do motor do vibrador. A frequência absoluta usada varia para cada primitivo, 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 as 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 máxima, e o pulso do toque, definido pelo sinal em que a amplitude diminui de 10% para menos de 1% da amplitude máxima. 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 eles geralmente são acionados com frequência e tocados em sucessão rápida. A intensidade percebida de uma única primitiva curta pode aumentar a intensidade do efeito maior. Por esse motivo, calibre uma única marcação ou uma marcação primitiva baixa com uma composição maior, por exemplo, 100 marcações consecutivas.
Primitiva de clique
A primitiva de clique é um efeito forte e nítido, geralmente operando perto da frequência de ressonância de um dispositivo para atingir a saída máxima em um curto período. Ele é mais forte e mais profundo do que as outras primitivas, com desempenho máximo.
Se disponível, use a aceleração do motor no início e a frenagem ativa no final para alcançar um tempo curto de subida e queda do motor. Para alguns motores, o uso de uma onda quadrada em vez de uma senoidal pode acelerar mais rápido. 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 a primitiva de clique
Parâmetro | Diretriz |
---|---|
Duração |
Meta: 12 ms Limite: < 30 ms |
Aceleração máxima de saída |
Destino: 2G Limite: > 1 GB |
Frequência | Aproximadamente na frequência de ressonância |
Primitive de marcação (marcação leve)
A marcação primitiva é um efeito curto e nítido, geralmente operando em um intervalo de frequência mais alto. Essa primitiva também pode ser descrita como um clique de média intensidade com uma frequência mais alta e uma cauda curta. A mesma orientação se aplica para atingir um tempo de subida curto usando o overdrive 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 marcação:
Figura 7. Exemplo de perfil de aceleração de saída para a marcação primitiva
Parâmetro | Diretriz |
---|---|
Duração |
Meta: 5 ms Limite: < 20 ms |
Aceleração máxima de saída |
Meta: metade de Limite: entre 0,5 GB e 1 GB |
Frequência |
Alvo: frequência de ressonância 2x Limite: < 500 Hz |
Primitiva de marcação baixa
A marcação baixa é uma versão mais suave e fraca de uma marcação leve, operando em um intervalo de frequência mais baixo 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 atingir um tempo de subida curto usando a aceleração 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 tic baixo:
Figura 8. Exemplo de perfil de aceleração de saída para primitiva de tick baixo
Parâmetro | Diretriz |
---|---|
Duração |
Meta: 12 ms Limite: < 30 ms |
Aceleração máxima de saída |
Meta: 1/4 de Limite: entre 0,2 G e 0,5 G |
Frequência |
Meta: frequência de ressonância 2/3 Limite: < 100 Hz |
Primitivas de chirp
As primitivas de chiado 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 gerar em diferentes faixas de frequência varia de acordo com a curva de resposta de frequência do atuador. Os intervalos de frequência e os níveis de tensão precisam ser ajustados de acordo com o dispositivo.
Primitiva de aumento lento
O aumento lento é uma amplitude lenta e uma varredura de frequência para cima com início suave e aumento consistente da intensidade da vibração durante a varredura. Ele pode ser implementado por 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 da vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência da 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 aumento lento
Se a resposta de frequência do motor for limitada (não forte o suficiente fora da frequência de ressonância), uma implementação alternativa será um varredura seno de 1/2x a 1x da frequência de ressonância. A ressonância do motor contribui para atingir o pico do sinal no final.
Parâmetro | Diretriz |
---|---|
Duração |
Meta: 500 ms Tolerância: 20 ms |
Aceleração máxima de saída |
Meta: 0,5 GB Limite: entre 0,5 GB e 1 GB |
Frequência |
Alvo: 1/2 a 2/3 da frequência de ressonância Alternativa: 1/2 para frequência de ressonância |
Primitiva de aumento rápido
O aumento rápido é uma amplitude mais rápida e uma varredura de frequência para cima com início suave e aumento consistente da intensidade da vibração durante a varredura. As metas de aceleração de saída e de frequência de vibração precisam ser iguais às da primitiva de aumento lento, alcançadas 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 aumento lento. A linha vermelha corresponde aos rótulos de amplitude à esquerda e representa como a amplitude da vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência da 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 elevação rápida
Parâmetro | Diretriz |
---|---|
Duração |
Meta: 150 ms Tolerância: 20 ms |
Aceleração máxima de saída |
Meta: igual a Limite: igual a |
Frequência |
Meta: igual a Alternativa: igual a |
Primitiva de queda rápida
A queda rápida é uma amplitude rápida e um varredura para baixo com início suave. É possível 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 durante 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 da vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência da vibração varia com o tempo.
Figura 11. Parâmetros de entrada e exemplo de perfil de aceleração de saída para a primitiva de queda rápida
Parâmetro | Diretriz |
---|---|
Duração |
Objetivo: 100 ms Tolerância: 20 ms |
Aceleração máxima de saída |
Destino: 1 G Limite: entre 0,5 GB e 2 GB |
Frequência |
Meta: 2 a 1 vezes a frequência de ressonância |
Primitiva Thud
O som é um efeito de percussão baixo e ressonante que simula a sensação física de bater em madeira ocas. Essa primitiva opera em um intervalo de baixa frequência, semelhante à primitiva de marcação baixa, para dar mais corpo ao efeito. É possível implementar a primitiva thud como um sweep de amplitude e frequência para baixo em um intervalo de frequência mais baixo (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 da vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência da vibração varia com o tempo.
Figura 12. Parâmetros de entrada e exemplo de perfil de aceleração de saída para a primitiva thud
Se a resposta de frequência do motor for limitada, uma implementação alternativa é começar com um sinal de acionamento de intensidade total na frequência ressonante 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 menor frequência para que a vibração seja sentida.
Parâmetro | Diretriz |
---|---|
Duração |
Meta: 300 ms Tolerância: 20 ms |
Aceleração máxima de saída |
Meta: 0,25 g Limite: entre 0,2 G e 0,5 G |
Frequência |
Alvo: 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
A rotação simula um momento de rotação rápida para cima e para baixo com um ligeiro 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 um intervalo de frequência menor (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 da vibração varia com o tempo. A linha azul corresponde aos rótulos de frequência à direita e representa como a frequência da 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 ter uma sensação de giro e instabilidade.
Se a resposta de frequência do motor for limitada, uma implementação alternativa é fazer uma varredura de seno rápida de 1/2x a 1x a frequência de ressonância e vice-versa. A ressonância do motor dá automaticamente ao sinal um sotaque no meio.
Figura 13. Parâmetros de entrada e exemplo de perfil de aceleração de saída para a primitiva de giro
Parâmetro | Diretriz |
---|---|
Duração |
Meta: 150 ms Tolerância: 20 ms |
Aceleração máxima de saída |
Meta: 0,5 GB Limite: entre 0,25 G e 0,75 G |
Frequência |
Alvo: 2/3 a 1/3, depois de volta para 1/2 da frequência de ressonância Alternativa: 2/3 para 1x e depois de volta para 1/2 da frequência de ressonância |