Os fabricantes de dispositivos geralmente são considerados os proprietários dos recursos privados criados para cada dispositivo. Por isso, os esforços de engenharia geralmente são focados em uma base por dispositivo. Pouco ou nenhum esforço é feito para a consistência de outros dispositivos no ecossistema.
Em contraste direto, os desenvolvedores se esforçam para criar apps que funcionem em todos os smartphones Android no ecossistema, independentemente das especificações técnicas de cada dispositivo. Essa diferença na abordagem pode causar um problema de fragmentação. Por exemplo, os recursos de hardware de alguns smartphones não correspondem às expectativas definidas pelos desenvolvedores do app. Portanto, se as APIs de retorno tátil funcionarem em alguns smartphones Android, mas não em outros, o resultado será um ecossistema inconsistente. É por isso que a configuração de hardware desempenha um papel fundamental para garantir que os fabricantes possam implementar APIs de retorno tátil do Android em todos os dispositivos.
Esta página fornece uma lista de verificação detalhada para configurar a conformidade de hardware para o melhor uso das APIs táteis do Android.
A figura abaixo ilustra a criação de conhecimento comum entre fabricantes de dispositivos e desenvolvedores, que é uma etapa essencial para criar um ecossistema coerente.
Figura 1. Criar conhecimento entre fabricantes de dispositivos e desenvolvedores
Lista de verificação para implementação de haptics
-
- Lista de constantes para implementar o retorno tátil.
Mapear constantes entre HAL e API
- Mapeamento de recomendações entre constantes de API públicas (chamadas de marcadores de posição no framework) e constantes do HAL, que implementam os marcadores de posição.
- Consulte Princípios de design para orientar o mapeamento recomendado para saber mais sobre esse processo.
-
- Instruções sobre como segmentar efeitos hápticos. Use estas instruções para realizar verificações rápidas no hardware.
Vamos explorar cada uma dessas etapas com mais detalhes abaixo.
Etapa 1: implementar constantes
Realize essas 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
Verifique o status de implementação das constantes táteis a seguir.
Constantes táteis | Locais e resumos |
---|---|
EFFECT_TICK , EFFECT_CLICK ,
EFFECT_HEAVY_CLICK ,
EFFECT_DOUBLE_CLICK |
Classe
VibrationEffect 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 chamados por
createPredefined() . |
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD |
Classe
VibrationEffect.Composition As constantes táteis em VibrationEffect.Composition podem
ter intensidade escalonável, que são chamadas por
addPrimitive(int primitiveId, float scale, int delay) . |
As vibrações alternativas descritas abaixo 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
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 os eventos de entrada
com determinados elementos da IU, como KEYBOARD_PRESS e
KEYBOARD_RELEASE , que são chamados por
performHapticFeedback() . |
Etapa 2: mapear constantes entre HAL e API
A etapa 2 apresenta mapeamentos recomendados entre constantes públicas do HAL e constantes da API. Se o hardware avaliado na etapa 1 não implementar as constantes HAL, use a etapa 2 para atualizar os padrões de substituição descritos na etapa 1 e 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 na 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 escalonamento (
S
). - Esse modelo requer hardware avançado. Se os OEMs quiserem usar
uma UX háptica avançada com
VibrationEffect.Composition
(para o melhor uso das APIs hápticas mais recentes), é recomendável implementar o hardware usando esse modelo.
- 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 escalonamento (
Modelo discreto
É recomendável mapear todas as constantes públicas fornecidas na API com constantes da 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 da HAL é um processo dependente de 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í.
Figura 5. Faixa constante de HAL por amplitude
Quando o número de constantes da HAL com amplitude discreta é definido, é hora de mapear as constantes HAL e de API pelo número de constantes da 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 haptics.
Figura 6. 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 da HAL
(por exemplo, HAL_H0
, HAL_H1
) para produzir a HAL dimensionada
(HAL_H0
x S
). Nesse caso, a HAL dimensionada é mapeada para definir constantes da API
(HAL_H0
x S1
= H0S1
= EFFECT_TICK
), conforme mostrado na Figura 7. 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.
Figura 7. Faixa de constante HAL por textura (HAL_H0) e escala de amplitude (S)
Figura 8. Mapeamento de constante de 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 7 ilustra o mapeamento constante aumentando a variação de um HAL para muitas constantes de API com escalonamento de amplitude.
Figura 9. 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.
Etapa 3: avaliar o hardware
A avaliação de hardware envolve a definição de três efeitos hápticos, rotulados como Efeitos 1, 2 e 3 para essa avaliação específica.
Efeito 1: constantes táteis curtas predefinidas
A constante
VibrationEffect.EFFECT_CLICK
é o efeito de referência ou denominador comum no mapeamento da API HAL
fornecido na etapa 2. Ele é mapeado com o efeito mais usado,
HapticFeedbackConstants.KEYBOARD_PRESS
.
A avaliação desse efeito ajuda a determinar a prontidão do dispositivo de destino para
retorno tátil claro.
Efeito 2: efeito tátil personalizado e curto
A constante
VibrationEffect.createOneShot(20,255)
é para efeitos táteis personalizados. Para impulsos personalizados curtos,
20 ms é o limite máximo recomendado para definir a duração. Um único
impulso maior que 20 ms não é recomendado porque é percebido como uma
vibração barulhenta.
Figura 10. Efeito tátil personalizado curto
Efeito 3: efeito tátil personalizado longo com variação de amplitude
A constante
VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
é para efeitos personalizados longos com variação de amplitude. A capacidade de
produzir amplitudes variadas para efeitos hápticos personalizados é um dos indicadores para
avaliar os recursos do dispositivo para
háptica avançada.
Os timings []
e amplitudes []
recomendados são {500, 500}
e {128, 255}
,
respectivamente, o que apresenta uma tendência crescente de amplitude de 50% a 100%,
com uma taxa de amostragem de 500 ms.
Figura 11. Efeito tátil longo personalizado com variação de amplitude
Para verificar os recursos de hardware do controle de amplitude do Efeito 3, use o
método
Vibrator.hasAmplitudeControl()
.
O resultado precisa ser true
para executar
VibrationEffect.createWaveform
com amplitude variável conforme o esperado.
Figura 12. Avaliação do sujeito do efeito tátil 1, 2 e 3
Fazer uma avaliação subjetiva
Para uma verificação rápida de coerência, primeiro faça uma avaliação subjetiva. O objetivo da avaliação subjetiva é observar a amplitude dos efeitos hápticos para determinar se o dispositivo pode gerar háptica com amplitudes perceptíveis pelo ser humano.
Uma pergunta específica estruturada com base nessa noção tem esta aparência: o dispositivo pode produzir efeitos táteis perceptíveis para os usuários conforme esperado? Responder a essa pergunta ajuda a evitar hápticas com falhas, incluindo hápticas imperceptíveis que os usuários não conseguem sentir ou hápticas indesejadas em que os formatos de onda não produzem padrões como pretendido.
Fazer uma avaliação avançada
É altamente recomendável realizar avaliações de qualidade avançadas. As avaliações de qualidade avançadas caracterizam atributos quantificáveis de efeitos hápticos para implementar háptica de qualidade. Ao terminar, os fabricantes de dispositivos poderão diagnosticar o status atual da resposta tátil, o que significa que eles podem definir metas para melhorar a qualidade geral. Consulte Avaliação de hardware.