Los fabricantes de dispositivos generalmente se consideran los propietarios de los activos privados creados para cada dispositivo. Como tal, sus esfuerzos de ingeniería a menudo se centran en cada dispositivo ; poco o ningún esfuerzo se destina a la consistencia de otros dispositivos en el ecosistema.
En contraste directo, los desarrolladores se esfuerzan por crear aplicaciones que funcionen en todos los teléfonos Android del ecosistema, independientemente de las especificaciones técnicas de cada dispositivo. Esta diferencia de enfoque puede causar un problema de fragmentación, por ejemplo, las capacidades de hardware de ciertos teléfonos no coinciden con las expectativas establecidas por los desarrolladores de aplicaciones. Entonces, si las API hápticas funcionan en algunos teléfonos Android pero no en otros, el resultado es un ecosistema inconsistente. Esta es la razón por la que la configuración del hardware juega un papel fundamental para garantizar que los fabricantes puedan implementar las API hápticas de Android en todos los dispositivos.
Esta página proporciona una lista de verificación paso a paso para configurar el cumplimiento del hardware para el mejor uso de las API hápticas de Android.
La siguiente figura ilustra la creación de conocimientos comunes entre los fabricantes y desarrolladores de dispositivos, que es un paso fundamental para crear un ecosistema cohesivo.
Figura 1. Construyendo conocimiento entre fabricantes y desarrolladores de dispositivos
Lista de verificación de implementación de hápticos
- Lista de constantes para implementar hápticas.
Asignar constantes entre HAL y API
- Mapeo de recomendaciones entre constantes de API públicas ( marcadores de posición con nombre en el marco) y constantes HAL, que implementan los marcadores de posición.
- Consulte Principios de diseño para guiar la asignación recomendada para obtener más información sobre este proceso.
- Instrucciones sobre los efectos hápticos de destino. Utilice estas instrucciones para realizar comprobaciones rápidas de su hardware.
Exploraremos cada uno de estos pasos con mayor detalle a continuación.
Paso 1: Implementar constantes
Realice estas comprobaciones para determinar si su dispositivo cumple con los requisitos mínimos para implementar hápticos.
Figura 2. Efectos de implementación
Figura 3. Implementando primitivas
Compruebe el estado de implementación de las siguientes constantes hápticas.
constantes hápticas | Ubicaciones y resúmenes |
---|---|
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK | Clase de efecto de VibrationEffect Las constantes hápticas en VibrationEffect no incluyen ninguna noción de eventos de entrada y no tienen elementos de interfaz de usuario. En cambio, las constantes incluyen la noción de niveles de energía, como EFFECT_CLICK y EFFECT_HEAVY_CLICK , que son llamados por createPredefined() . |
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD | Clase VibrationEffect.Composition Se permite que las constantes hápticas en VibrationEffect.Composition tengan una intensidad escalable, a las que llama addPrimitive(int primitiveId, float scale, int delay) . |
Las vibraciones alternativas que se describen a continuación se realizarán en dispositivos que no implementen las constantes VibrationEffect
. Se recomienda actualizar estas configuraciones para que funcionen mejor en dichos dispositivos.
EFFECT_CLICK
Vibración de forma de onda creada con
VibrationEffect.createWaveform
y los tiempos configurados enframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Vibración de forma de onda creada con
VibrationEffect.createWaveform
y los tiempos configurados enframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
Vibración de forma de onda creada con
VibrationEffect.createWaveform
y los tiempos (0, 30, 100, 30).EFFECT_TICK
Vibración de forma de onda creada con
VibrationEffect.createWaveform
y los tiempos configurados enframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Figura 4. Implementación de constantes de retroalimentación
Verifique el estado de las siguientes constantes de comentarios públicos.
constantes hápticas | Ubicaciones y resúmenes |
---|---|
| Clase HapticFeedbackConstants Las constantes hápticas en HapticFeedbackConstants ayudan a los eventos de entrada con ciertos elementos de la interfaz de usuario, como KEYBOARD_PRESS y KEYBOARD_RELEASE , que son llamados por performHapticFeedback() . |
Paso 2: Asigne constantes entre HAL y API
El paso 2 presenta las asignaciones recomendadas entre las constantes HAL públicas y las constantes API. Si el hardware evaluado en el Paso 1 no implementa las constantes HAL, entonces se debe usar el Paso 2 para actualizar los patrones de respaldo descritos en el Paso 1 para generar salidas similares. El mapeo es asistido por dos modelos predeterminados diferentes.
Modelo discreto (simple)
- La amplitud es la variable clave de este modelo. Cada entidad en el HAL representa una amplitud háptica diferente.
- Este modelo es un requisito mínimo necesario para implementar la UX háptica básica.
- Una UX háptica más avanzada requiere hardware avanzado y un modelo avanzado (modelo continuo).
Modelo continuo (avanzado)
- La textura y la amplitud son las variables clave de este modelo. Cada entidad en el HAL representa diferentes texturas hápticas. La amplitud de cada entidad HAL está controlada por el factor de escala (
S
). - Este modelo requiere hardware avanzado. Si los OEM desean usar UX háptica avanzada con
VibrationEffect.Composition
(para el mejor uso de las API hápticas más recientes), se recomienda implementar su hardware con este modelo.
- La textura y la amplitud son las variables clave de este modelo. Cada entidad en el HAL representa diferentes texturas hápticas. La amplitud de cada entidad HAL está controlada por el factor de escala (
modelo discreto
Se recomienda mapear todas las constantes públicas proporcionadas en la API con constantes HAL apropiadas. Para comenzar este proceso, averigüe cuántas formas de onda hápticas con amplitud discreta puede definir el dispositivo en el HAL. Una pregunta específica estructurada en torno a esa noción se ve así: ¿Cuántos efectos hápticos de un solo impulso con diferencias de amplitud perceptibles por humanos se pueden definir en mi teléfono? La respuesta a esta pregunta determina el mapeo.
La definición de constantes HAL es un proceso que depende del hardware. Por ejemplo, un teléfono de nivel de entrada puede tener solo las capacidades de hardware para producir una sola forma de onda háptica. Los dispositivos con componentes de hardware más avanzados producen una gama más amplia de niveles de amplitud discretos y pueden definir múltiples formas de onda hápticas en la HAL. El mapeo constante HAL-API toma la constante HAL (usando la amplitud media como línea de base), luego organiza los efectos más fuertes o más débiles a partir de ahí.
Figura 5. Rango constante HAL por amplitud
Cuando se define la cantidad de constantes HAL con amplitud discreta, es hora de asignar las constantes HAL y API por la cantidad de constantes HAL. Este proceso de mapeo puede segmentar una sola constante API de impulso en hasta tres grupos discretos de niveles de amplitud. La forma en que se segmentan las constantes de la API se basa en los principios de UX para acompañar los eventos de entrada. Para obtener más información, consulte Diseño de experiencia de usuario háptica.
Figura 6. Mapeo de constantes HAL-API: modelo discreto
Si su dispositivo solo admite dos constantes HAL con amplitudes discretas, considere combinar las constantes HAL de nivel de amplitud media y alta. Un ejemplo de esta noción en la práctica sería asignar EFFECT_CLICK
y EFFECT_HEAVY_CLICK
a la misma constante HAL, que sería la constante HAL de nivel de amplitud media. Si su dispositivo admite solo una constante HAL con amplitud discreta, considere fusionar los tres niveles en uno.
modelo continuo
El modelo continuo con escalabilidad de amplitud se puede aplicar para definir constantes HAL. Se puede aplicar un factor de escala ( S
) a las constantes HAL (por ejemplo, HAL_H0
, HAL_H1
) para producir el HAL escalado ( HAL_H0
x S
). En este caso, el HAL escalado se mapea para definir constantes API ( HAL_H0
x S1
= H0S1
= EFFECT_TICK
) como se muestra en la figura 7. Al usar la escalabilidad de amplitud del modelo continuo, un dispositivo puede almacenar una pequeña cantidad de constantes HAL con texturas distintivas y agregue variaciones de amplitud ajustando el factor de escala ( S
). Los fabricantes de dispositivos pueden definir la cantidad de constantes HAL en función de la cantidad de texturas hápticas diferentes que desean proporcionar.
Figura 7. Rango constante HAL por textura (HAL_H0) y escala de amplitud (S)
Figura 8. Mapeo de constantes HAL-API: modelo continuo
En el modelo continuo, diferentes constantes HAL representan diferentes texturas hápticas en lugar de diferentes amplitudes; el factor de escala ( S
) puede configurar la amplitud. Sin embargo, debido a que la percepción de la textura (por ejemplo, la nitidez) está relacionada con la percepción de la duración y la amplitud, se recomienda combinar la textura y el factor de escala (en el proceso de diseño del mapeo HAL-API).
La Figura 7 ilustra el mapeo constante aumentando la variación de un HAL a muchas constantes API con escalabilidad de amplitud.
Figura 9. Variación creciente con escalabilidad de amplitud
Nota: la figura anterior ilustra una instancia específica de asignación constante, por lo que las convenciones de nomenclatura son hipotéticas. La realización de este proceso es única para cada fabricante de dispositivos.
Para todas las constantes API escalables, como PRIMITIVE_TICK
y PRIMITIVE_CLICK
en VibrationEffect.Composition
, el nivel de energía de la constante API depende del parámetro de float scale
cuando la constante API se declara a través addPrimitive(int primitiveID, float scale, int delay)
. PRIMITIVE_TICK
y PRIMITIVE_CLICK
se pueden diseñar con una clara distinción mediante el uso de diferentes constantes HAL. Se recomienda este enfoque si desea agregar variación a la textura .
Paso 3: evaluar el hardware
La evaluación del hardware implica definir tres efectos hápticos, etiquetados Efectos 1, 2 y 3 para esta evaluación específica.
Efecto 1: constantes hápticas cortas predefinidas
La constante VibrationEffect.EFFECT_CLICK
es el efecto de referencia o el denominador común en la asignación de HAL-API proporcionada en el paso 2. Está asignada con el efecto más utilizado, HapticFeedbackConstants.KEYBOARD_PRESS
. Evaluar este efecto ayuda a determinar la preparación de su dispositivo de destino para hápticos claros .
Efecto 2: efecto háptico personalizado corto
La constante VibrationEffect.createOneShot(20,255)
es para efectos hápticos personalizados. Para impulsos cortos personalizados únicos, 20 ms es el umbral máximo recomendado para definir la duración. No se recomienda un solo impulso de más de 20 ms porque se percibe como una vibración de zumbido .
Figura 10. Efecto háptico personalizado corto
Efecto 3: efecto háptico personalizado largo con variación de amplitud
La constante VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
es para efectos personalizados largos con variación de amplitud. La capacidad de producir amplitudes variables para efectos hápticos personalizados es uno de los indicadores para evaluar las capacidades del dispositivo para hápticos ricos . Los timings []
y amplitudes []
recomendados son {500, 500}
y {128, 255}
, respectivamente, que presenta una tendencia creciente de amplitud del 50 % al 100 %, con una frecuencia de muestreo de 500 ms.
Figura 11. Efecto háptico personalizado largo con variación de amplitud
Para verificar las capacidades de hardware del control de amplitud para el Efecto 3, use el método Vibrator.hasAmplitudeControl()
. El resultado debe ser true
para ejecutar VibrationEffect.createWaveform
con amplitud variable según lo previsto.
Figura 12. Evaluación del sujeto del efecto háptico 1, 2 y 3
Realización de una evaluación subjetiva
Para una verificación rápida de la coherencia, realice primero una evaluación subjetiva. El objetivo de la evaluación subjetiva es observar la amplitud de los efectos hápticos para determinar si el dispositivo puede generar hápticos con amplitudes perceptibles por humanos.
Una pregunta específica estructurada en torno a esta noción se ve así: ¿Puede el dispositivo producir efectos hápticos fácilmente perceptibles para los usuarios como se esperaba? Responder a esta pregunta lo ayuda a evitar hápticas fallidas , incluidas hápticas imperceptibles que los usuarios no pueden sentir, o hápticas no deseadas en las que las formas de onda no producen patrones según lo previsto.